我有一些问题,让一个文件正确下载到浏览器时,用户点击它。此刻,文件正在下载,但数据似乎已损坏,因为当我打开PDF,我得到的错误消息“出错”。文件大小也非常小,所有的字节正在从控制器传递似乎没有使它的文件下载。
我的控制器,从API抓取数据作为字节数组并将其传递回来:
[Route("GetForm/{formType}/{formId}")]
[HttpGet]
public ActionResult GetForm(string formType, long formId) {
byte[] fileBytes = ApiClient.GetForm(formType, formId);
return File(fileBytes, "application/pdf");
}
而React方面:
downloadForm = (content) => {
const getTaxFormDownloadlUrl = window.location.origin + '/GetForm';
fetch(`${getPaymentTaxFormDownloadlUrl}/${statements.Formtype}/${statements.Formid}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
responseType: 'blob',
}).then((res) => {
var blob = new Blob([res], {
type: 'application/pdf',
});
const element = document.createElement('a');
element.href = URL.createObjectURL(blob);
element.setAttribute('download', content.Formtype + ".pdf");
document.body.appendChild(element);
element.click();
});
};
任何帮助都将不胜感激。
1条答案
按热度按时间xqkwcwgp1#
我决定在React中动态创建到GetForm控制器调用的链接,因此,当点击链接时,控制器被调用,返回文件。downloadForm逻辑能够被完全删除。基本上,我只是将文件名添加到GetForm
return File()
中,以使一切正常。