移动端下载 Linux 根目录下的 PDF 文件,为何会显示未知文件?如何解决?

移动端下载 linux 根目录下的 pdf 文件,为何会显示未知文件?如何解决?

在移动端下载 pdf 文件

问题描述

开发者希望在移动端下载存储在 linux 根目录下的 pdf 文件,但使用 servlet 返回文件流后,发现移动端点击下载后显示未知文件。

解决方法

编码文件路径

编码文件路径可以解决移动端无法正确识别路径的问题。在 servlet 中获取文件路径时,使用 encodeuricomponent(path) 对路径进行编码,然后再发送给客户端。

修改后的 pdfdownloadservlet 代码如下:

resp.setcontenttype("application/pdf;charset=utf-8");resp.setheader("content-disposition", "attachment;filename=a.pdf");string path = req.getparameter("path");file w2 = new file(path);logger.info("pdf path:" + w2.getpath());fileinputstream fs;try {    fs = new fileinputstream(w2);    bufferedinputstream bs = new bufferedinputstream(fs);    printwriter outw = resp.getwriter();    byte buffbytes[] = new byte[3072];    int read = 0;    while ((read = bs.read(buffbytes)) != -1) {        string strtemp = new sun.misc.base64encoder().encode(arrays.copyofrange(buffbytes, 0, read));        outw.print(strtemp);    }} catch (exception e) {    logger.info("pdf出错");    logger.error(e.getmessage(), e);}

修改后的 javascript 代码如下:

$.ajax({  type: "post",  async: false,  url: projectName + "/PdfDownloadServlet?path=" + encodeURIComponent(path),  success: function (data) {    var blob = new Blob([data], { type: "application/pdf;charset=utf-8" });    saveAs(blob, "CF1002.pdf");  },  error: function (e) {    console.log(e);    alert(e);  },});

通过对文件路径进行编码,移动端即可正确识别路径,并下载 pdf 文件。

以上就是移动端下载 Linux 根目录下的 PDF 文件,为何会显示未知文件?如何解决?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1496899.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 19:00:29
下一篇 2025年12月19日 19:00:42

相关推荐

发表回复

登录后才能评论
关注微信