मैं जावास्क्रिप्ट और jQuery के लिए नया हूँ। फ़ॉर्म में N फ़ाइलों की संख्या अपलोड करते समय, केवल अंतिम फ़ाइल N बार अपलोड की जाती है,
मैं AJAX अनुरोध के माध्यम से प्रत्येक फ़ाइल को एक समय में (अतुल्यकालिक रूप से) अपलोड करना चाहता हूं।
नीचे मेरा कार्यान्वयन है:
$("#file-input").on("input", function() {
var formdata = new FormData(document.getElementById("file-catcher"));
$.each($("#file-input")[0].files, function (key, file){
formdata.append(key, file);
// This is to Inspecting each file
for(var pair of formdata.entries()) {
console.log(pair[0]+ ': '+ pair[1]);
}
// Sending AJAX
$.ajax({
type: "POST",
data: formdata,
url: "/url/to/upload",
datatype: 'JSON',
contentType: false,
cache: false,
processData: false,
success:function(data){
console.log(data); // Inspecting Response
},
error: function (error) {
console.log(error); // Inspecting Error if occured
}
});
});
});
<form method="POST" id="file-catcher" action="/url/to/upload" enctype="multipart/form-data">
<input type="text" name="fileCode" value="10">
<input type="file" id="file-input" name="file-input" multiple>
</form>
1
Maqsud
24 पद 2020, 14:45
1 उत्तर
सबसे बढ़िया उत्तर
मैं Chris G को एक कतार बनाने और फ़ाइलें भेजने के लिए प्रत्येक फ़ाइल के माध्यम से पुनरावृति करने के लिए मार्गदर्शन करने के लिए श्रेय देना चाहता हूं क्रम में।
const inputFile = document.getElementById('file-input');
// Iterating through each file and sending AJAX request
for (const file of inputFile.files){
var formdata = new FormData(document.getElementById("file-catcher"));
formdata.append("file-input", file);
$.ajax({
type: "POST",
data: formdata,
url: "/url/to/upload",
datatype: 'JSON',
contentType: false,
cache: false,
processData: false,
success:function(data){
console.log(data);
},
error: function (error) {
console.log(error);
}
});
}
0
Maqsud
26 पद 2020, 13:46
formdata
में कुछ भी जोड़ने की जरूरत नहीं है; प्रारंभ में इसे सेट करने के बाद इसमें पहले से ही सबकुछ शामिल होना चाहिए।await
op के अंदर या b) एक कतार का निर्माण करते हैं और वर्तमान कतार समाप्त होने के बाद अगली कतार आइटम शुरू करते हैं।