我有一個用于上傳多個檔案的簡單表單。
<form id="myform" enctype="multipart/form-data">
<input id="files" name="files" type="file" class="form-control" multiple>
</form>
當用戶提交表單時,我分別上傳每個檔案以單獨跟蹤進度:
for (i=0; i<$('#files')[0].files.length; i ){
var file = $('#files')[0].files[i];
uploadFile(file, recipient, $row);
}
uploadFile() 函式的主要部分:
// Pack the data
var data = new FormData();
data.append("file", file);
$.ajax({
url: 'upload.php',
type: 'POST',
data: data,
cache: false,
contentType: false,
processData: false,
xhr: function(){
var myxhr = $.ajaxSettings.xhr();
if (myxhr.upload){
// do more stuff
}
return myxhr;
},
現在在我的upload.php 檔案中,我錯誤地認為該檔案將在POST 變數中,但它仍然需要通過$_FILES 訪問。所以我的問題是,如果我觸發多次上傳,我是否會遇到任何競爭條件,其中 php 腳本讀取 $_FILES 并且它不包含預期的檔案?因為upload.php 在檔案上傳之前不會被呼叫,所以它不會知道$_FILES 的當前狀態是嗎?還是我想多了?
uj5u.com熱心網友回復:
就像任何其他 HTTP 請求一樣,每個請求都是完全獨立的。它們不會發生沖突或相互導致問題(除非您同時啟動太多以至于服務器根本無法滿足需求)。
啟動一個新的 PHP 腳本實體來處理每個 AJAX 請求,它有自己單獨的實體$_FILES來讀取。您使用 AJAX 觸發請求的事實無關緊要 - 這對服務器來說是完全透明的:它不知道(或不關心)請求是如何發起的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/360161.html
標籤:javascript php 阿贾克斯
