Tôi biết đã có câu hỏi cho vấn đề này nhưng tôi vẫn không thể làm điều đó đúng cách. Cần giúp đỡ.Đưa tệp đầu vào vào FormData jquery để gửi tới PHP
Tôi cần tải lên tệp có dữ liệu bổ sung với tệp đó.
input.php my:
<input type="file" id="foto_path" name="foto_path" />
<input type="button" value="Add" onclick="javascript:sendForm()" />
tôi send rằng với javascript:
function sendForm() {
var fileInput = document.querySelector('#foto_path');
var oMyForm = new FormData();
var nip=123223374;//it will be generated by php, for temporary i just hardcode it
oMyForm.append("foto_path", fileInput);
oMyForm.append("nip",nip);
var oReq = new XMLHttpRequest();
oReq.open("POST", "upload-file.php", true);
oReq.onload = function(oEvent) {
if (oReq.status == 200) {
//oOutput.innerHTML = "Uploaded!";
alert('success');
} else {
//oOutput.innerHTML = "Error " + oReq.status + " occurred uploading your file.<br \/>";
alert('failed');
}
};
oReq.send(oMyForm);
}
và khi tôi send đó để upload-file.php:
logapp("post -> ".print_r($_POST,true));//logapp is just function to log to file
logapp("files -> ".print_r($_FILES,true));
Tôi nhận này từ nhật ký:
09/07/2013 02:47:06 pm :: post -> Array
(
[foto_path] => [object HTMLImageElement]
[nip] => 123223374
)
09/07/2013 02:47:06 pm :: files -> Array
(
)
tôi đã cảnh báo thành công nhưng tôi cần chuyển file cho foto_path
như $_FILES
không $_POST
. Câu hỏi của tôi là lý do tại sao tệp đầu vào được phát hiện là $_POST["foto_path"]
không phải là $_FILES["foto_path"]
. Cách thay đổi điều đó thành $_FILES["foto_path"]
để tôi có thể bắt đầu làm việc với các tệp được tải lên?
Kiểm tra câu hỏi này [Upload File Với Ajax XMLHttpRequest] [1] [1]: http://stackoverflow.com/questions/6211145/upload-file-with-ajax-xmlhttprequest – maketest
tôi vẫn có '[đối tượng HTMLImageElement]' trong '$ _POST' làm thế nào để thay đổi nó thành các tập tin? –
Lưu ý rằng 'formData()' không được hỗ trợ trong IE <= 9. Tuy nhiên, có vẻ như không có vấn đề gì ngày nay. –