reactjs .NET 6 React -从字节数组中提取FileContentResult以PDF格式下载

inn6fuwd  于 2022-11-04  发布在  React
关注(0)|答案(1)|浏览(201)

我有一些问题,让一个文件正确下载到浏览器时,用户点击它。此刻,文件正在下载,但数据似乎已损坏,因为当我打开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();
        });
    };

任何帮助都将不胜感激。

xqkwcwgp

xqkwcwgp1#

我决定在React中动态创建到GetForm控制器调用的链接,因此,当点击链接时,控制器被调用,返回文件。downloadForm逻辑能够被完全删除。基本上,我只是将文件名添加到GetForm return File()中,以使一切正常。

相关问题