[英]Uploading a non-pdf file using jQuery AJAX causes issues
我的任務是創建一個html文件上傳器,它必須為我們的ORDS端點創建一個POST請求。
我想出了一個適用於PDF文件的解決方案,但是當我嘗試上傳其他任何問題時,問題就開始出現了。
這是我的代碼:
$('#login-form').submit(function(e) {
e.preventDefault();
if (document.getElementById("fileinput").value != "") {
AJAXSendRequest();
} else {
document.getElementById("alertfile").style.display = "block";
}
return false;
});
function AJAXSendRequest() {
var formData = new FormData();
formData.append("file", document.getElementById("fileinput").files[0]);
var settings = {
"async": true,
data: formData,
processData: false,
contentType: document.getElementById("fileinput").files[0].type,
"crossDomain": true,
"url": "http://192.168.0.145:7001/ords/dads/media_module/media/",
"method": "POST",
"headers": {
"Content-Type": document.getElementById("fileinput").files[0].type,
"filename": document.getElementById("fileinput").files[0].name,
"inWHAT_DOC": tipo,
"inID_DOC_INSIDE": document.getElementById("id").value.toString()
}
}
$.ajax(settings).done(function(response) {
document.getElementById("successfile").style.display = "block";
// window.close();
});
}
無論我上傳什么類型的文件,我都會收到HTTP201,但這是讀取上傳的xml文件的結果
-----------------------------19718198955447
Content-Disposition: form-data; name="file"; filename="AutoResponder.xml"
Content-Type: text/xml
<?xml version="1.0" encoding="utf-8"?>
<AutoResponder LastSave="2019-04-01T11:26:51.2600418+02:00" FiddlerVersion="5.0.20182.28034">
<State Enabled="false" Fallthrough="false" UseLatency="false" />
</AutoResponder>
-----------------------------19718198955447--
formData以某種方式包裝在這個奇怪的字符串中,該字符串也顯示在上傳的文件中(但不是在pdf中) (數字隨每個請求而變化),這兩個標題總是添加在文件的頂部。
Content-Disposition: form-data; name="file"; filename="AutoResponder.xml"
Content-Type: text/xml
有什么我做錯了嗎? 提前致謝
編輯:請求卷曲工作沒有問題。
curl -X POST http://192.168.0.145:7001/ords/dads/media_module/media/ -H 'Content-Type: image/jpeg' -H 'Host: 192.168.0.145:7001' -H 'filename: testimgcurl.jpg' -H 'inID_DOC_INSIDE: 1240187' -H 'inWHAT_DOC: C Contratti Appalto' --data-binary @ch4.jpg
經過一些實驗,我最終使用了XMLHttpRequest。
這是工作代碼。
var file = document.getElementById("fileinput").files[0];
var data = new Blob([file], {type: file.type});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "http://192.168.0.145:7001/ords/dads/media_module/media/");
xhr.setRequestHeader("Content-Type", file.type);
xhr.setRequestHeader("Host", "192.168.0.145:7001");
xhr.setRequestHeader("filename", file.name);
xhr.setRequestHeader("inWHAT_DOC", tipo);
xhr.setRequestHeader("inID_DOC_INSIDE", id);
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.