移动端下载 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

相关推荐

  • js中如何打开控制台

    打开 JavaScript 控制台的方法:使用浏览器的 DevTools 控制台,按下快捷键 Ctrl + Shift + I(Windows/Linux)或 Command + Option + I(Mac)。在代码中使用 console.log() 函数输出信息,自动打开浏览器控制台。 如何在 …

    2025年12月19日
    000
  • 阿里云远程桌面连接失败怎么办?

    阿里云远程桌面连接失败 您在远程阿里云服务器时遇到了问题,即使服务器的设置看似正确。以下是一些可能导致此问题的常见原因和解决方法: 1. 公网 IP 地址 确保您的服务器已分配公网 IP 地址。如果没有公网 IP 地址,您将无法从外部网络访问服务器。 2. 防火墙规则 检查阿里云网络的防火墙配置。确…

    2025年12月19日
    000
  • js如何判断浏览器

    JavaScript 判断浏览器的几种方法:Navigator 对象:提供有关浏览器的信息,例如用户代理字符串和浏览器版本。条件编译:使用 ES2015 功能根据浏览器的能力编写代码。第三方库:如 Browserify、Modernizr 和 bowser,可以简化浏览器检测。 如何使用 JavaS…

    2025年12月19日
    000
  • node.js 如何

    安装 Node.js 有两种主要方法:使用安装器,前往 Node.js 官方网站并选择与操作系统和架构相匹配的安装器。使用包管理器:Windows:choco install nodejsmacOS:brew install nodeLinux:sudo apt install nodejs Nod…

    2025年12月19日
    000
  • 阿里云服务器无法远程桌面,该怎么办?

    阿里云服务器无法远程桌面,原因探析 经过检查,您提供的服务器配置没有问题,但仍然无法远程访问。请按照以下步骤排查问题: 确认公网IP配置:确保服务器已配置公网IP,否则无法从外部网络访问。 检查防火墙设置:云服务器上的防火墙必须开放必要的端口才能进行远程桌面连接。这是因为远程桌面协议(MSTSC)需…

    2025年12月19日
    000
  • Ubuntu下没有HBuilder怎么办?Vscode 是你的最佳选择吗?

    Ubuntu下的HBuilder替代品 想要寻找一款类比HBuilder的集成开发环境(IDE)?别担心,即使在Ubuntu系统中,也有一些出色的选择。 虽然目前尚未发现与HBuilder完全相似的替代品,但开发者推荐的强大编辑器Vscode是您不错的选择。Vscode拥有丰富的功能,可以满足您的开…

    2025年12月19日
    000
  • Svelte igration 的经验和注意事项

    我最近更新了一个相当复杂的网络应用程序。该应用具有 auth、stripe、i18n、dark/light 模式、pwa 等功能。总体而言,它有大约 30 个页面和组件,几乎没有第三方 npm 包。 我想指出在将应用程序迁移到 svelte 5 时我发现非常具有挑战性的事情。 自动迁移脚本锤 sve…

    2025年12月19日
    000
  • 掌握 Cron 作业:高效地自动化任务

    cron 作业简介cron 作业是计划在类 unix 操作系统上按特定时间间隔运行的命令或脚本。它可以自动执行重复性任务,例如系统维护、备份、通知或在预定义的时间运行脚本。 cron 作业使用 cron 守护进程进行管理,确保计划任务可靠执行,无需人工干预。 cron 作业对于需要自动化日常流程以提…

    2025年12月19日
    000
  • 什么是本地主机?本地主机作为开发人员的用途

    您有没有想过当开发人员在网站上线之前对其进行测试时会发生什么?或者网络管理员如何检查他们的系统是否正常工作?答案在于一个强大但经常被误解的概念,称为localhost。让我们深入了解 localhost 是什么、它为何重要以及它如何变得非常有用。 什么是本地主机? 用最简单的术语来说,本地主机就像您…

    2025年12月19日
    000
  • js如何调用硬件驱动

    在 JavaScript 中调用硬件驱动有两种方式:操作系统提供的 API(如 DirectX、IOCTL),允许 JavaScript 代码访问硬件设备。浏览器提供的 Web API(如 Web Audio API、Web MIDI API),提供特定的硬件功能访问权限。 怎样在 JavaScri…

    2025年12月19日
    000
  • CKA 完整课程日 ulti Stage Docker 构建

    在这篇博文中,我们将探索 docker 并逐步使用简单的 nginx 应用程序创建多阶段 docker 构建。如果您刚刚开始使用 docker,请不要担心,我将一步一步分解所有内容,以便您可以继续操作! dockerfile 这是我们将使用的 dockerfile: from node:18-alp…

    2025年12月19日
    000
  • JavaScript JSSSugar 提案、Nodejs Nextjs RCnd 更多

    欢迎来到本周的“本周 JavaScript”! 我们为您提供了一系列令人兴奋的更新,包括关于拆分 JavaScript 的有争议的提案、最新的 Node.js 版本、一些杀手级工具等等。所以系好安全带,让我们开始吧! JavaScript 可能成为两种语言? TC39 围绕一项新提案 —JS0 和 …

    2025年12月19日
    000
  • 使用 React 构建租赁物业管理平台

    movin’ in 是一个面向代理的租赁物业管理平台,具有用于管理物业、客户和预订的后端、用于租赁物业的前端和移动应用程序。 通过以下解决方案,您可以通过将其托管在具有至少 1GB RAM 的 Docker Droplet 上,以非常低的成本构建一个针对多个机构进行优化的完全可定制的房产…

    2025年12月19日
    000
  • Nodejs v 发布:终止对 Windows 位的支持

    2024 年 10 月 16 日,随着 node.js v23.0.0 的发布,node.js 社区达到了一个重要的里程碑。这个最新版本引入了多项改进和新功能,但也带来了一个重要的变化:node.js 将不再支持 32 位 windows。 为什么放弃 32 位 windows 支持? 根据 git…

    2025年12月19日
    000
  • GitHub Actions 和 CI/CD 管道

    当然!以下是与 github actions 和 ci/cd 管道相关的关键概念和实践的全面摘要,以及我们讨论的示例: github actions 和 ci/cd 管道的关键概念 持续集成(ci): ci 涉及自动构建和测试代码更改,以确保它们与现有代码库良好集成。 github actions …

    2025年12月19日
    000
  • 我作为全栈开发者的旅程:从 Laravel 到 Nextjs

    作为一名全栈开发人员,我踏上了一段激动人心的旅程,这让我能够探索各种技术、框架和开发实践。在本文中,我想分享我使用 Laravel 进行后端开发和使用 Next.js 进行前端解决方案的经验,以及我在构建创新应用程序时如何在它们之间进行转换。 Laravel API 冒险我的旅程始于 Laravel…

    2025年12月19日
    000
  • 如何安装和使用 NVM 管理多个 Nodejs 版本

    介绍 高科技爱好者,大家好! 欢迎阅读有关使用适用于 windows 的节点版本管理器 (nvm) 的分步指南!如果您曾经面临过跨不同项目管理多个 node.js 版本的挑战,那么 nvm 就是您需要的工具。它简化了流程,让您可以轻松地在 node.js 版本之间切换并保持开发环境井井有条。 读完本…

    2025年12月19日
    000
  • 如何开始使用 NodeJS – 初学者手册

    Node 是一个可以在“Web 浏览器之外”运行JavaScript代码的环境。它使用 Google 的 V8 引擎将 JavaScript 代码转换为机器代码。由于 Node 在 Web 浏览器之外运行 JavaScript 代码,这意味着它无法访问仅在浏览器中可用的某些功能,例如 DOM 或窗口…

    2025年12月19日
    000
  • node.js项目如何运行

    Node.js 项目运行步骤:安装 Node.js打开终端或命令提示符导航到项目目录使用 npm install 安装依赖项使用 node index.js 运行项目,其中 index.js 是主文件查看终端或命令提示符中的输出 如何运行 Node.js 项目 步骤 1:安装 Node.js 在运行…

    2025年12月19日
    000
  • js文件如何打开

    您可以使用以下方法打开 JS 文件:使用文本编辑器,如记事本或 Sublime Text。使用 Web 浏览器,如 Chrome 或 Firefox。在开发环境中使用 JavaScript 调试器,如 Chrome DevTools。 如何打开 JS 文件 JavaScript (JS) 文件是一种…

    2025年12月19日
    000

发表回复

登录后才能评论
关注微信