1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-11 17:24:46 +02:00

Add @BitPoet processwire/processwire-requests#233 to make ajax file upload use chunked method for potential reduced memory usage and support of larger file uploads

This commit is contained in:
Ryan Cramer
2018-11-08 09:28:03 -05:00
parent c146c71de3
commit 93a9747657

View File

@@ -287,7 +287,21 @@ class WireUpload extends Wire {
$filename = rawurldecode($filename); // per #1487 $filename = rawurldecode($filename); // per #1487
$dir = $this->getUploadDir(); $dir = $this->getUploadDir();
$tmpName = tempnam($dir, wireClassName($this, false)); $tmpName = tempnam($dir, wireClassName($this, false));
file_put_contents($tmpName, file_get_contents('php://input'));
// upload without chunks:
// file_put_contents($tmpName, file_get_contents('php://input'));
// upload with chunks (via @BitPoet processwire-requests#233)
$uploadData = fopen("php://input", "rb");
$saveFile = fopen($tmpName, "wb");
$chunkSize = 8192 * 1024; // about 8 megabytes
while(!feof($uploadData)) {
$chunk = fread($uploadData, $chunkSize);
if($chunk !== false) fwrite($saveFile, $chunk);
}
fclose($saveFile);
fclose($uploadData);
$filesize = is_file($tmpName) ? filesize($tmpName) : 0; $filesize = is_file($tmpName) ? filesize($tmpName) : 0;
$error = $filesize ? UPLOAD_ERR_OK : UPLOAD_ERR_NO_FILE; $error = $filesize ? UPLOAD_ERR_OK : UPLOAD_ERR_NO_FILE;