前端预览pdf——直接访问后台开放的静态资源/文件流

一、直接访问后台静态资源(静态资源文件夹后台已开放)

作为前端开发人员,自己用egg.js框架后台测试

1.egg.js配置开放public静态资源文件夹,可以直接接口形式预览pdf 例:http://127..0.0.1:7001/public/syl.pdf
2.把文件上传到public文件夹下
3.此处测试案例 为上传的也是pdf形式文件

egg.js配置

在plugin.js中添加 config.defalut.js中默认可以不需要配置

exports = {
  static: {
      enable: true,
  },
};

返回路径

可根据文件名或者某一唯一确定文件的字段 返回路径
前端直接window.open('http://127..0.0.1:7001/public/syl.pdf (文件名)')

项目中 后台是 java

1.后台开发人员开放spring boot 中static文件夹
2.前端上传的word 后台转pdf放在static文件夹下

warning!!!
同事在本地开发环境中这种方式可以,但是 打完jar包后,部署就找不到静态文件夹路径了,这是个问题。后来还是用了插件预览。

二、文件流形式

前端把word文件传给java后台
后台把docx/doc格式文件转为pdf文件流
前端接收到文件流 加上合理形式进行展示

问题

接口返回前端得到是乱码(只要流正确不影响)
我使用pdf.js方法预览,详细可参考链接 pdf.js预览

重点

请求时,加上
responseType: 'blob',
headers: {
"Content-Type": "application/pdf",
},

这两个一定要加,不然即使后台流正确,也打不开pdf

//预览流
export const  wsPreview = (data) => {
    return axios({
        url: `/t/mailInfo/liuText?guid=${data}`,
        method: 'post',
        responseType: 'blob',
        headers: {
            "Content-Type": "application/pdf",
          },
    })
}

此处res是后台返回的二进制文件流
window.open里的地址参考上面的pdf.js链接,从官网上下载pdf.js文件

    //预览附件
    async preview(item) {
      let res = await this.$api.mail.wsPreview(item.id);
      var href = window.URL.createObjectURL(res);
      window.open(
        "../../static/web/viewer.html?file=" + encodeURIComponent(href)
      );
    },
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • md5sum命令作用:在网络传输、设备之间转存、复制大文件等时,可能会出现传输前后数据不一致的情况。这种情况在网络...
    study_qsy阅读 299评论 0 0
  • 前台需要展示图片,期望后台直接返回图片地址,但是后台给的是的文件流而不是一个图片地址,需要把文件流转为base64...
    宏_4491阅读 363评论 0 0
  • 克隆仓库到本地 git clone 这里写仓库地址 ,克隆的时候仓库地址记得选SSH地址 更新文件 进入项目所在本...
    0error_阅读 1,419评论 0 0
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 9,045评论 28 54
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,483评论 4 8

友情链接更多精彩内容