Función para cortar archivos en partes

  • Autor Autor zcriptz
  • Fecha de inicio Fecha de inicio
zcriptz

zcriptz

1
Ómicron
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
Suscripción a IA
PHP:
<?php
function cutFile($fileName, $folderDest, $parts){
    file_exists($folderDest)
        ||
    mkdir($folderDest)
    ?
        is_dir($folderDest)
        ?
            fileperms($folderDest) != 16877
                &&
            !chmod($folderDest, 0755)
            ?
                $error = "No pudo cambiarse los permisos de $folderDest"
            :
                file_exists($fileName)
                ?
                    is_readable($fileName)
                    ?
                        $totalBytes = filesize($fileName)
                    :
                        $error = 'El archivo no puede leerse'
                :
                    $error = 'El archivo no existe'
        :
            $error = $folderDest.' no es una carpeta'
    :
        $error = 'Hay un error con la carpeta de destino'
    ;
    if($error)
        return $error
    ;
    $totalBytes = filesize($fileName);
    $partSize = ceil($totalBytes/$parts);
    $n = 0;
    $cutBytes = 0;
    while($n < $parts){
        if($cutBytes+$partSize > $totalBytes)
            $partSize = $totalBytes-$cutBytes
        ;
        file_put_contents(
            "$folderDest/$fileName.part".str_pad($n, strlen($parts-1), 0, STR_PAD_LEFT),
            file_get_contents($fileName, FALSE, NULL, $cutBytes, $partSize)
        );
        $cutBytes += $partSize;
        $n++;
    }
    return "El archivo $fileName ha sido partido en $parts en la carpeta $folderDest correctamente";
}

//Ejemplo
//echo cutFile('movie.mp4', 'result', 10);
?>

Modo de uso:
cutFile('nombre_del_archivo', 'carpeta_de_destino', cantidad_de_partes);

Luego hago otra función para unir las partes. 👍

Así quedan las partes: (para probar partí error_log)
i8L894e.png


Una película en 1000 partes: (Le puse un md5 a los nombres y encripté cada parte, por eso pesan diferente)
dDjfz39.png
 
Última edición:
Como sabes cual es la parte 5?, por ejemplo
 
Como sabes cual es la parte 5?, por ejemplo

¿En las codificadas? Sabiendo el nombre original y agregando el número que quiero...

PHP:
md5('nombre_original.mp4.partNUMEROQUEQUIERA');

(Pero esto no lo hace el código que puse en el tema)
 
¿En las codificadas? Sabiendo el nombre original y agregando el número que quiero...

PHP:
md5('nombre_original.mp4.partNUMEROQUEQUIERA');

(Pero esto no lo hace el código que puse en el tema)

Sirve Para Videos MP4 y Reproducirlo?
 
Pero osea tengo que unir las partes o ya reproduce cada parte del mp4?

Puedes reproducir cada parte manejando rangos y partial content.

En este tema lo hago:
 
vale muchas gracias.
 
Puedes reproducir cada parte manejando rangos y partial content.

En este tema lo hago:
Que ventaja tiene hacer esto por partes a tener la película en una archivo???
 
no entiendo mucho que uso se le puede dar a este script
 
PHP:
<?php
function cutFile($fileName, $folderDest, $parts){
    file_exists($folderDest)
        ||
    mkdir($folderDest)
    ?
        is_dir($folderDest)
        ?
            fileperms($folderDest) != 16877
                &&
            !chmod($folderDest, 0755)
            ?
                $error = "No pudo cambiarse los permisos de $folderDest"
            :
                file_exists($fileName)
                ?
                    is_readable($fileName)
                    ?
                        $totalBytes = filesize($fileName)
                    :
                        $error = 'El archivo no puede leerse'
                :
                    $error = 'El archivo no existe'
        :
            $error = $folderDest.' no es una carpeta'
    :
        $error = 'Hay un error con la carpeta de destino'
    ;
    if($error)
        return $error
    ;
    $totalBytes = filesize($fileName);
    $partSize = ceil($totalBytes/$parts);
    $n = 0;
    $cutBytes = 0;
    while($n < $parts){
        if($cutBytes+$partSize > $totalBytes)
            $partSize = $totalBytes-$cutBytes;
        ;
        file_put_contents(
            "$folderDest/$fileName.part".str_pad($n, strlen($parts-1), 0, STR_PAD_LEFT),
            file_get_contents($fileName, FALSE, NULL, $cutBytes, $partSize)
        );
        $cutBytes += $partSize;
        $n++;
    }
    return "El archivo $fileName ha sido partido en $parts en la carpeta $folderDest correctamente";
}

//Ejemplo
//echo cutFile('movie.mp4', 'result', 10);
?>

Modo de uso:
cutFile('nombre_del_archivo', 'carpeta_de_destino', cantidad_de_partes);

Luego hago otra función para unir las partes. 👍

Así quedan las partes: (para probar partí error_log)
i8L894e.png


Una película en 1000 partes: (Le puse un md5 a los nombres y encripté cada parte, por eso pesan diferente)
dDjfz39.png

Muy bueno, lo guardare por si necesite.
Se me vino a la mente, a lo que antes usaba el HACHA 🙂 claro era para archivos
 
También sirve para partir un ZIP/RAR/7ZIP y volver a unirlo luego para descomprimirlo. 😀

U ocultar archivos...
 
Atrás
Arriba