因此,我使用php laravel创建了一个docx,然后转换为pdf并将其保存在我的公共服务器文件夹中.最后,我将向我的客户发送带有该文件的响应.

现在,在客户端,我正在try 下载它.

它工作了一半,因为我可以下载一个文件(页码完全相同),但文件和所有页面都是空白页.

在这里,服务器端将我的文件发送到客户端

    $docx->transformDocument($fileName . '.docx',  $fileName . '.pdf');

return response()->file(public_path($fileName . '.pdf'));

我在客户端try 过的

export const generateDocx = (offerData) => async () => {
  await axios({
    method: 'post',
    url: `${process.env.REACT_APP_API_URL2}offer/generate/docx`,
    headers: {
      'Content-Type': 'application/json',
      Accept: 'application/json', 
      responseType: 'arraybuffer',
    },
    data: offerData,
  }).then((res) => {
    console.log(res); 
    // Create blob link to download
    const url = window.URL.createObjectURL(new Blob([res.data]));
    const link = document.createElement('a');
    link.href = url;
    link.setAttribute('download', `FileName.pdf`);
 
    document.body.appendChild(link);
 
    link.click();
 
    link.parentNode.removeChild(link);
  });
};

what my console.log (res) contain : enter image description here

我也try 过这个:

    let fileName = 'aaa.pdf';
    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
 
      window.navigator.msSaveOrOpenBlob(
        new Blob([res.data], {
          type: 'application/pdf',
          encoding: 'UTF-8',
          responseType: 'blob'
        }),
        fileName
      );
    } else {
      const url = window.URL.createObjectURL(
        new Blob([res.data], {
          type: 'application/pdf',
          encoding: 'UTF-8',
        })
      );
      const link = document.createElement('a');
      link.href = url;
      link.setAttribute('download', fileName);
      document.body.appendChild(link);
      link.click();
      link.remove();
    }
    console.log(res.data);
  });

并带有文件保护程序包

   var blob = new Blob([res.data], {
      type: 'application/pdf',
    });
    saveAs(blob, 'hello world.pdf');
  });

what my blob console.log contain : enter image description here

推荐答案

经过一些测试后,它正在工作

export const generateDocx = (offerData) => async () => {
  await axios({
    method: 'post',
    url: `${process.env.REACT_APP_API_URL2}offer/generate/docx`,
    responseType: 'blob',
    headers: {
      Accept: 'application/pdf',
    },
    data: offerData,
  }).then((res) => {
    var blob = new Blob([res.data], {
      type: 'application/pdf',
    });
    saveAs(blob, 'test.pdf');
  });
};

感谢大家的帮助

Javascript相关问答推荐

如何在Javascript中使用Go和检索本地托管Apache Arrow Flight服务器?

数字时钟在JavaScript中不动态更新

如何在模块层面提供服务?

如何从html元素创建树 struct ?

如何避免页面第一次加载时由于CSS样式通过JavaScript更改而出现闪烁

使用ThreeJ渲染的形状具有抖动/模糊的边缘

如何将数据块添加到d3力有向图中?

在Reaction中的handleSubmit按钮内,useSelector值仍然为空

Reaction Redux&Quot;在派单错误中检测到状态Mutations

在VS代码上一次设置多个变量格式

向数组中的对象添加键而不改变原始变量

图表4-堆叠线和条形图之间的填充区域

为什么在运行于<;img>;事件处理程序中的JavaScript中x和y是不可变的?

如何在Firebase中读取对象的特定字段?

扩散运算符未按预期工作,引发语法错误

错误400:当我试图在React中使用put方法时,该字段是必需的

Select 所有输入.值

如何根据获取的对象数量动态生成状态变量

VITE版本中的内联SVG

使用Video.play()时,视频显示白屏