我試圖將文件保存在我的服務器上。它適用於小文件,但不適用於大文件。file_get_contents('php:// input');返回空字符串與大文件
在JavaScript中,我發送文件用XMLHttpRequest
如下
var ajax = new XMLHttpRequest();
ajax.open('POST', configuration.backend + 'ajax/uploadVideo', true);
ajax.setRequestHeader('X-File-Name', input.files[0].name);
ajax.setRequestHeader('X-File-Size', input.files[0].size);
ajax.send(input.files[0]);
在PHP這個腳本保存輸入到硬盤:
$filename = $_SERVER['HTTP_X_FILE_NAME'];
$extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
$new_filename = uniqid().'.'.$extension;
$fh = fopen(DOCROOT.'/public/videos/'.$new_filename, 'w');
fwrite($fh, file_get_contents('php://input'));
fclose($fh);
的腳本工作完美地與較小的文件,但不是較大的。它只是創建一個0字節的文件。 (8.7MB不工作,而5.7MB工作)。我沒有得到任何PHP錯誤。錯誤報告級別爲E_ALL & ~E_DEPRECATED
。
我也試過增加post_max_size
,upload_max_filesize
和memory_limit
的值,但沒有任何改變產生任何效果。
請原諒我提出這樣一個明顯的問題,但是您是否在更改php.ini後重新啓動了Apache? –
我沒有看到任何'file_get_contents',但我看到一個'file_put_contents'。 「放」是問題,是的? – Ohgodwhy
那麼,他的上傳,而不是下載,我認爲... –