1 回答

TA贡献1845条经验 获得超8个赞
这是我在项目中用来下载文件的代码。
控制器代码:
[HttpGet("DownloadFile")]
public async Task<IActionResult> DownloadFile(string fileName = "")
{
var response = await DownloadFileFromDatabase(fileName);
if (response.IsSuccessStatusCode)
{
System.Net.Http.HttpContent content = response.Content;
var contentStream = await content.ReadAsStreamAsync();
var audioArray = ReadFully(contentStream);
return Ok(new { response = audioArray, contentType = "audio/wav", fileName });
}
else
{
throw new FileNotFoundException();
}
}
客户端代码:
HandleBase64 (data , contentType,fileName ){
let byteCharacters = atob(data);
let byteNumbers = new Array(byteCharacters.length);
for (var i = 0; i < byteCharacters.length; i++)
byteNumbers[i] = byteCharacters.charCodeAt(i);
let byteArray = new Uint8Array(byteNumbers);
let blob = new Blob([byteArray], {type: contentType});
if(contentType === "audio/wav"){
var blobURL=URL.createObjectURL(blob);
window.open(blobURL);
}
else{
var blobURL = window.URL.createObjectURL(blob);
var anchor = document.createElement("a");
anchor.download = fileName;
anchor.href = blobURL;
anchor.click();
}
}
您也可以在控制器端使用文件流简单地返回文件。这将自动下载不需要在客户端处理的文件
return File(stream, "application/octet-stream");
- 1 回答
- 0 关注
- 84 浏览
添加回答
举报