我想通过xmlHttpRequest从Json
接收文件,但下载后无法打开所需文件。
存储在数据库中的所需文件没有问题,因为当我将其保存在C#中时,它会打开它,问题仅在于无法正确接收所需文件的java脚本部分。
Java脚本:
var xmlHttpRequest = new XMLHttpRequest();
if (!window.XMLHttpRequest) {
xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
let formData = new FormData();
formData.append('request.Id', window.$(this).attr('data'));
xmlHttpRequest.open("POST", 'Url', true);
xmlHttpRequest.onloadend = function () {
let response = ParseJson(xmlHttpRequest.responseText);
alert(response.Result);
let blob = new Blob([response.File], { type: response.MimeType });
let a = document.createElement('a');
a.href = window.URL.createObjectURL(blob);
a.download = response.FileName;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
window.URL.revokeObjectURL(a.href);
}
xmlHttpRequest.send(formData);
控制器:
public IActionResult GetFileDownload(GetFileDownloadRequest request)
{
//Get byte[] from database
return Json(new GetFileDownload()
{
Result = "OK",
FileName = file.Name ?? "",
MimeType = Path.GetExtension(file.Name).GetMimeType(),
File = file.File
});
}
1条答案
按热度按时间jtjikinw1#
JSON响应的首字母将变为小写而不是大写。所以它将是
response.mimeType
response.file
response.fileName
。您可以尝试以下代码进行测试GetFileDownload.cs
控制器
脚本
F12