PHP 8.5.0 Alpha 1 available for testing

Voting

: min(three, zero)?
(Example: nine)

The Note You're Voting On

micronix at gmx dot net
14 years ago
Hello PHP World After many Hours of worryness :=)

I have found the Solution for Resume or Pause Uploads
In this Code Snippet it is the Server Side not Client on any Desktop Programm you must use byte ranges to calculate the uploaded bytes and missing of total bytes.

Here the PHP Code

<?php
$CHUNK
= 8192;

try {
if (!(
$putData = fopen("php://input", "r")))
throw new
Exception("Can't get PUT data.");

// now the params can be used like any other variable
// see below after input has finished

$tot_write = 0;
$tmpFileName = "/var/dev/tmp/PUT_FILE";
// Create a temp file
if (!is_file($tmpFileName)) {
fclose(fopen($tmpFileName, "x")); //create the file and close it
// Open the file for writing
if (!($fp = fopen($tmpFileName, "w")))
throw new
Exception("Can't write to tmp file");

// Read the data a chunk at a time and write to the file
while ($data = fread($putData, $CHUNK)) {
$chunk_read = strlen($data);
if ((
$block_write = fwrite($fp, $data)) != $chunk_read)
throw new
Exception("Can't write more to tmp file");

$tot_write += $block_write;
}

if (!
fclose($fp))
throw new
Exception("Can't close tmp file");

unset(
$putData);
} else {
// Open the file for writing
if (!($fp = fopen($tmpFileName, "a")))
throw new
Exception("Can't write to tmp file");

// Read the data a chunk at a time and write to the file
while ($data = fread($putData, $CHUNK)) {
$chunk_read = strlen($data);
if ((
$block_write = fwrite($fp, $data)) != $chunk_read)
throw new
Exception("Can't write more to tmp file");

$tot_write += $block_write;
}

if (!
fclose($fp))
throw new
Exception("Can't close tmp file");

unset(
$putData);
}

// Check file length and MD5
if ($tot_write != $file_size)
throw new
Exception("Wrong file size");

$md5_arr = explode(' ', exec("md5sum $tmpFileName"));
$md5 = $md5sum_arr[0];
if (
$md5 != $md5sum)
throw new
Exception("Wrong md5");
} catch (
Exception $e) {
echo
'', $e->getMessage(), "\n";
}
?>

<< Back to user notes page

To Top