2
我試圖使用XMLHttpRequest和FileReader將(DICOM)二進制文件上載到服務器。使用XMLHttpRequest和FileReader上傳二進制文件whyle設置自定義內容類型和邊界
根據DICOM標準的內容類型搞亂來multipart/related;type=application/dicom
定義和請求負載必須Content-Type:application/dicom
再次,我設法以某種方式構建結構與此代碼:
let boundary = Math.random().toString().substr(2);
let reader = new FileReader();
reader.readAsBinaryString(fileList[0]);
reader.onload = function(e) {
var xmlHttpRequest = new XMLHttpRequest();
xmlHttpRequest.open("POST", "myurl", true);
var dashes = '--';
var crlf = "\r\n";
if (fileList[0].type == ''){
filetype = 'application/dicom';
} else {
filetype = fileList[0].type;
}
let content = e.target["result"];
var data = dashes + boundary + crlf + "Content-Type: " + filetype + crlf + crlf + content + crlf + dashes + boundary + dashes;
xmlHttpRequest.setRequestHeader("Content-Type", "multipart/related;type=application/dicom;boundary=" + boundary+";");
xmlHttpRequest.setRequestHeader("Accept", "application/dicom+json");
xmlHttpRequest.send(data);
}; xmlHttpRequest.send(data);
};
的問題這種方法似乎是XMLHttpRequest進行UTF-8編碼,並且破壞了二進制數據(請參閱this後)。
- 問題是如何使用reader.readAsArrayBuffer()並設置正文的內容類型和邊界?或
- 如何防止XMLHttpRequest進行UTF-8編碼?
我的第二個問題是如何用這種方法處理大文件(大約1TB)?