1 回答

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
這是我在項(xiàng)目中用來下載文件的代碼。
控制器代碼:
[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();
}
}
您也可以在控制器端使用文件流簡(jiǎn)單地返回文件。這將自動(dòng)下載不需要在客戶端處理的文件
return File(stream, "application/octet-stream");
- 1 回答
- 0 關(guān)注
- 98 瀏覽
添加回答
舉報(bào)