【发布时间】:2019-09-09 05:38:33
【问题描述】:
我正在尝试从后端以 csv 格式从数据库下载一组数据。当在浏览器上进行下载时,csv 中只有 [Object Object]。
目前我在 API 控制器中有这个:
public HttpResponseMessage GetListCsv(string fileName)
{
var result = new HttpResponseMessage(HttpStatusCode.OK);
var csv = _myService.DownloadCsv(fileName);
var stream = new MemoryStream(new ASCIIEncoding().GetBytes(csv));
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("text/csv");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = $"{fileName}.csv" };
return result;
}
这是在前端:
axios.get('api/List/Csv?fileName=' + id, { responseType: 'arrayBuffer',
headers: {
'Accept': 'text/csv'
} })
.then(resp => {
const saveData = (function () {
const a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, fileName) {
const blob = new Blob([data], { type: "text/csv" }),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
};
}());
const fileName = id + ".csv";
saveData(resp, fileName);
this.fetchData();
});
}
无论何时运行,都会在浏览器上使用正确的文件名进行下载,并下载 csv。然而,csv 中唯一的东西就是 [object object]。
对此的任何帮助将不胜感激。
【问题讨论】:
-
如果您仍然需要帮助,请提供
DownloadCsv函数的代码。
标签: c# reactjs asp.net-core asp.net-core-webapi