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:
@@ -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;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user