我不確定爲什麼我的代碼在我的主機上無法處理大於50kb的任何文件,儘管我在本地主機上工作正常。無法使用AJAX上傳大於50kb的文件
我測試了很多不同的文件大小,我非常肯定50kb是它的極限。如果一個文件大於50kb,它永遠不會傳遞給process.php。如果一個文件小於50kb,它會被傳遞給process.php。
有沒有人可以幫助我解決這個問題。我一直被困在這個問題上好幾個小時。
我確實在php.ini中設置了upload_max_filesize
到5M。
$(document).ready(function() {
$('#img_uploader').on('change', function()
{
uploadFiles(this.files);
}
});
function uploadFiles(fileList)
{
var xhr = new XMLHttpRequest();
var formData = new FormData();
for (var i = 0; i < fileList.length; i++) {
var file = fileList[i];
if (!file.type.match('image.*')) {
continue;
}
formData.append('photos[]', file);
formData.append('request', "uploadImg");
}
xhr.open('POST', 'process.php', true);
xhr.onload = function() {
if (xhr.status === 200) {
var data = xhr.responseText;
console.log(data);
//convert_json_append_HTML(data);
} else {
alert('An error occurred!');
}
};
xhr.send(formData);
}
更新時間:測試結果
我已經花了6個小時才找到問題。
這真是weired。
四分之一小時,審查所有的JavaScript和PHP代碼,記錄每一個步驟,以確保沒有錯的代碼。
- 測試本地主機上的所有場景。它工作完美。
2 /更改這三個變量不會解決問題,無論我設置了什麼限制。所以我改變了他們違約。
- 的upload_max_filesize
- memory_limit的
- 的post_max_size
3 /瀏覽器測試:
創建2個文件:test_1.php和test_2.php。 (基本HTML,沒有使用Javascript參與)
test_1.php
<form action="test2.php" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
test_2。PHP
<?php
var_dump($_FILES);
HTTP:
鉻:
- 文件< 50KB:通過
- 文件> 50KB:通過
火狐:
- 文件< 50KB:通過
- 文件> 50KB:通過
Internet Explorer中:
- 文件< 50KB:通過
- 文件> 50KB:通過
HTTPS
鉻:
- 文件< 50KB:通過
- 文件> 50KB:失敗
火狐:
- 文件< 50KB:通過
- 文件> 50KB:通過
Internet Explorer中:
- 文件< 50KB:通過
- 文件> 50KB:通過
我不知道爲什麼文件使用Chrome瀏覽器的HTTPS協議不能從test_1.php傳遞給test_2.php。有沒有人知道原因?或者可以嘗試在自己的服務器上進行測試。
檢查了Web服務器的錯誤日誌文件? – Spacedman
你得到的任何錯誤?您可以檢查瀏覽器控制檯,服務器的訪問日誌。 –
有3個變量需要檢查,upload_max_filesize,memory_limit和post_max_size。對於文件上傳,所有3個都進入了圖片。 – GeekAb