我的網路應用程式只能使用 .xlsx 檔案。我在控制器中創建了一個函式,它將 .xls 檔案轉換為 .xlsx 檔案。轉換作業完全正常。因此,每當我嘗試打開一個 .xls 檔案時,我都會通過 Ajax 請求發送它。
之后,我想用轉換后的 .xlsx 檔案進行回應,但它永遠不會到達客戶端。
由于轉換作業正常,我簡化了代碼,只傳遞一個簡單的 .xlsx 檔案,該檔案也不起作用。
JavaScript:
if (files[0].type == "application/vnd.ms-excel") {
console.log("XLS-File");
formData = new FormData();
formData.append("xlsfile", files[0]);
$.ajax({
url: '/Home/ConvertToXlsx',
type: 'POST',
cache: false,
processData: false,
data: formData,
contentType: false,
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
success: function (response) {
openXLSFile(response);
},
error: function () {
console.log("An Error occurred");
}
});
}
控制器:
public IActionResult ConvertToXlsx(IFormFile xlsfile) {
//For simplification without conversion
//var xlsconverter = new XLSConverter();
//FileStreamResult response = xlsconverter.XLSConvert(xlsfile);
var path = $"wwwroot/temp/";
var filepath = Path.Combine(path, "test.xlsx");
MemoryStream x = new MemoryStream();
using(FileStream fs = System.IO.File.OpenRead(filepath)) {
fs.CopyTo(x);
}
return File(x, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
}
在瀏覽器網路選項卡中,我得到狀態:net::ERR_CONNECTION_RESET

我是否在某處遺漏了某個設定,導致我根本無法回應檔案?
uj5u.com熱心網友回復:
如果要將檔案傳遞給操作,請嘗試使用以下代碼:
if (files[0].type == "application/vnd.ms-excel") {
console.log("XLS-File");
$.ajax({
url: '/Home/ConvertToXlsx',
type: 'POST',
cache: false,
processData: false,
data: files[0],
contentType: false,
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
success: function (response) {
openXLSFile(response);
},
error: function () {
console.log("An Error occurred");
}
});
}
如果你想回傳內容型別的檔案,你可以嘗試使用:
public IActionResult ConvertToXlsx(IFormFile xlsfile)
{
return File(xlsfile.OpenReadStream(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/491937.html
