文件下载,当后台返回的流式文件下载不成功时,可以直接通过接口链接下载

78 阅读1分钟
const params = {
  id: $route.query.proId
};

// downloadWord(params: any) {
//   return request.get<any>(`/RewriteProController/downloadWord?id=${params.id}`);
// }
// response返回流式文件
const response = await writeApi.aiInfo.downloadWord(params);
if (response) {
  // 创建 Blob 对象
  const blob = new Blob([response], {
    type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
  });
  // 创建一个 URL 对象
  const url = URL.createObjectURL(blob);
  // 创建一个链接元素
  const a = document.createElement('a');
  a.href = url;
  a.download = encodeURIComponent(`${manuscriptTitle.value}.docx`); // 下载时的文件名

  // 模拟点击下载
  a.click();
  // 释放 URL 对象
  URL.revokeObjectURL(url);
} else {
  console.error('未正确获取到 Word 文件数据');
}

上面的方式下载,word 打不开,不知道什么原因,有大神知道的可以留言

const exportWord = async () => {
  if (!manuscriptTitle.value) {
    ElMessage.warning('请先输入标题');
    return false;
  }
  const flag = aiInfoConData.value.some(item => {
    return item.resultContent;
  });
  if (!flag) {
    ElMessage.warning('请先输入内容');
    return false;
  }
  await saveData();
  const params = {
    id: $route.query.proId
  };
    //更换环境
  if (window.origin.includes('hj.fsfund.com')) {
    baseUrl.value = `${window.origin}/fund-grab`;
  } else {
    baseUrl.value = 'http://172.30.113.199:8702';
  }

  const downloadUrl = `${baseUrl.value}/RewriteProController/downloadWord?id=${params.id}&filename=${encodeURIComponent(
    'example.docx'
  )}`;
  // window.open(downloadUrl, '_blank');
  const link = document.createElement('a');
  link.href = downloadUrl;
  // link.download = name; // 可以指定下载后的文件名
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
};