
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)

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

Última edición: