移动端下载 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 文件,为何会显示未知文件?如何解决?的详细内容,更多请关注【创想鸟】其它相关文章!

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

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2654360.html

(0)
上一篇 2025年3月7日 09:24:45
下一篇 2025年3月7日 09:24:49

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 设计看不见的东西:我作为软件工程师的工作

    我签署了一份保密协议,我不确定我能对我的日常工作说些什么,但我会尽力解释,但不会透露太多细节。 我是一家美国跨国公司的软件工程师,我正在编写一个中间件,确保聊天机器人人工智能和各种服务之间的安全、顺畅的通信,以便能够向与这些服务相关的客户提…

    2025年3月7日
    200
  • 软件知识

    软件是指用于操作计算机并执行特定任务的指令、数据或程序的集合。它是计算机的无形组件,与物理组件硬件不同。软件有多种类型,每种都有不同的功能: 系统软件操作系统(OS):管理计算机硬件和软件资源并为计算机程序提供通用服务。示例包括 Windo…

    2025年3月7日
    200
  • 了解 HTTP 内部服务器错误:原因、解决方案和预防

    HTTP 500 内部服务器错误是访问网站时遇到的常见但令人沮丧的错误。此错误是服务器端问题,这意味着它是由托管网站的 Web 服务器而不是客户端浏览器内的问题引起的。当用户遇到 500 错误时,他们通常会看到一条通用消息,指出“出了问题”…

    2025年3月7日
    200
  • Webpack打包跨平台CSS背景图路径冲突:如何解决Windows与Linux系统路径差异?

    webpack打包不同平台css背景图路径不一致 问题: 在使用webpack打包一个带有皮肤切换功能的vue项目时,发现不同平台上的css背景图路径不一致。 分析: 立即学习“前端免费学习笔记(深入)”; windows平台路径问题: 在…

    2025年3月7日
    200
  • 我的软件工程之旅#调试、Docker 和成长

    自从我上一篇文章以来,这是一场旋风,我想分享我一直在做的事情、我学到的东西以及我的前进方向。过去的几个月充满了作为软件工程师成长的机会,虽然充满挑战,但我为自己取得的进步感到自豪。 泄漏测试设备项目进展我们的泄漏测试设备项目即将完成。我一直…

    2025年3月7日
    200
  • 在多个注册表之间同步 NPM 包

    照片由 nicolas radzimski 在 unsplash 上拍摄 问题 我们的团队依靠内部 gitlab npm 注册表来管理包。这非常适合内部分发,但在某些情况下需要与外部协作者共享包。将包从内部注册表同步到外部注册表成为一项新的…

    2025年3月7日
    200
  • 如何下载安装天堂js

    您可以通过以下步骤下载并安装天堂 JS:从官方网站下载安装程序。双击 Windows 安装程序文件或使用命令行在 macOS/Linux 上安装。根据提示完成安装即可。 如何下载安装天堂js 步骤 1:下载 前往天堂js官方网站:https…

    2025年3月7日
    200
  • Heroku 中的 Playwright 和 Chrome 浏览器测试

    我一直喜欢观看我的单元测试运行(并通过)。它们速度很快,并且通过测试让我确信我的个人作品表现得像他们应该的那样。相反,我经常很难确定浏览器端到端测试的优先级,因为编写和运行它们的速度非常慢。 幸运的是,多年来,用于端到端浏览器内测试的工具已…

    2025年3月7日 编程技术
    200
  • 完整指南:如何安装和使用 Cursor AI Editor

    在软件开发领域,几乎每天都会出现新工具,找到最适合您的工作流程的工具可能会改变游戏规则。来认识一下 cursor(一个人工智能驱动的代码编辑器)和 echoapi(其变革性 api 管理插件)。它们共同承诺在一个强大的平台内简化您的编码和 …

    2025年3月7日 编程技术
    200
  • typescript安装不了

    TypeScript 安装问题解决:确保系统环境满足要求并正确执行安装命令。具体步骤:1. 检查系统环境;2. 使用 npm 或 yarn 安装 TypeScript;3. 检查安装是否成功。常见安装问题:权限问题、网络问题、版本冲突等,可…

    2025年3月7日
    200

发表回复

登录后才能评论