直接用url访问静态文件 和 访问url获取 server读取文件后返回的数据流 有啥区别

发布于 2022-09-11 22:43:17 字数 304 浏览 27 评论 0

最近项目要求用户在浏览器里面 访问pdf文件,可以支持直接预览。

有时候返回的事静态文件地址,chrome默认用自己的pdf预览插件,就能打开,不如 embed 或者 iframe插入下即可。

但是还有另外情况:后台会返回文件数据流,这个时候再用iframe 和 embed就会直接下载,并不能在浏览器中预览。后来找到了pdf.js 这个插件可以实现。总之功能是解决了。

不过,还是不清楚这其中的区别,感觉访问静态文件也是访问文件流啊,难道不一样的数据形式吗?

没有读过很深的计算机知识,也不知道用什么关键词查询,求大神解答下。谢谢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

感情旳空白 2022-09-18 22:43:17

一般来说浏览器会根据返回的http中的header来判断文件类型,即

    content-type: image/gif

查看 nginx一下的配置文件

$grep pdf /etc/nginx/mime.types
    application/pdf                       pdf;

可见 pdf 对应的mime类型是 application/pdf, 即如果nginx 返回 content-type: application/pdf则浏览器会启动插件直接浏览。

为了让浏览器能提供下载功能,而不是直接查看,一般故意设成其它类型,如

location /download/abc.pdf {
    default_type application/octet-stream;  
    root /download ;
}

这样通过这个链接便是下载了。
如果上面的不起作用,也可以试试

add_header Content-Type "application/octet-stream";
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文