如何通过javascript下载pdf文件?

2023-12-09

我的 javascript 代码向我的 node.js 服务器发出以下 AJAX 请求:

var url = '/node/download';
var downloadRequest = new goog.net.XhrIo();
downloadRequest.headers.set('content-type', 'application/json');
downloadRequest.send(url);

我的 Node.js 服务器在节点上创建一个 pdf,并通过以下代码将 pdf 流式传输回客户端:

    var filestream = fs.createReadStream(pdfpath);                  
    res.writeHead(200, {
        'Content-disposition': 'attachment; filename=' + filename,
        "Content-Type":"application/pdf","Content-Transfer-Encoding": "binary"});
    filestream.on('data', function(chunk) {                     
        res.write(chunk);
    });
    filestream.on('end', function() {
        res.end();
    });

但现在我在如何在 javascript 客户端接收此响应时遇到困难,以便打开下载提示以允许用户下载并保存 pdf 文件。

请帮忙!

提前致谢!

附:请建议任何更好的方法来实现我的节点代码(如果有的话)

编辑:一种可能的解决方案是像这样发送我的请求:

window.location.assign('/node/download');

这样我就得到了下载提示,除了牺牲了产品的异步特性之外,一切都工作正常。有没有办法解决这个问题,以便我也可以保留异步性?


用于下载保存在服务器上的 pdf 文件

从客户端 JavaScript 发出这样的请求:

var reqObj = new XMLHttpRequest();
reqObj.open('GET','getpdf',true);     // 'getpdf' is the URI to recongize your request at the server
reqObj.send();

reqObj.onreadystatechange = function() {
    var resObj = this;
    if(resObj.readyState == resObj.DONE) {
        if (resObj.status != 200) {
            console.log("pdf can't be downloaded");
        } else if (resObj.status == 200){
            var resTxt = reqObj.responseText;
            window.location.assign(resTxt);    // Opens the pdf download prompt
        }
    }
}

在节点处理从上面收到的请求并响应:

var http = require('http');

function getPDFUrl() {
    return "http://testing.com/pdf/test.pdf";
}

var handler = http.createServer(function(request, response) {
if (request.url == 'getpdf' && request.method.toLowerCase() == 'get') {
    var pdfUrl = getPDFUrl();       //get pdf url here

    if (pdfUrl != null && pdfUrl != undefined && pdfUrl != '') {
        response.writeHead(200, {"Content-Type":"text/html"});
        response.write(pdfUrl);
        response.end();
    } else {
        response.writeHead(404, {"Content-Type":"text/html"});
        response.write("Not Found");
        response.end();
    }

}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过javascript下载pdf文件? 的相关文章

  • 使用 Angular 指令禁用文本选择

    我正在学习 JavaScript 和 AngularJS 我想使用 Angular Directive 禁用文本选择 我有该函数的 JavaScript 代码 function clearSelection if document sele
  • jQuery .push 到 .get 调用中的数组给出空结果

    谁能告诉我为什么下面给我一个空字符串 当我console log contentArray in the get 回调函数它显示数据 但是当我尝试在下面的代码中执行它时 结果为空 sectionArray contentArray func
  • .push() 将多个对象放入 JavaScript 数组中返回“未定义”

    当我将项目添加到beats数组然后console log用户时 我得到了数组中正确的项目数 但是当我检查 length 时 我总是得到 1 尝试调用索引总是会给我 未定义 如下所示 Tom beats 1 我想我错过了一些明显的东西 但这让
  • 当会话令牌无效时,我应该使用什么状态代码?

    创建 Web 服务 RESTful 时 当会话令牌无效时我应该使用什么状态代码 目前我公司的人给我发了一个404 未找到 但我认为这是不正确的 因为资源存在 也许我应该使用 401 Unauthorized 你怎么认为 您建议我在这种情况下
  • Cloud Functions for Firebase - 通过 Nodejs/Cloud Function 将多个 PDF 合并为一个

    我遇到了一个问题 我试图通过云功能合并一堆 PDF 然后将合并的 PDF 下载到用户的计算机上 我的提供程序中有一个函数 它调用云函数并传递指向 pdf 的 URL 数组 如下所示 mergePDFs pdfs Create array o
  • 如何使用javascript确保元素仅在圆上朝一个方向移动?

    好吧 我承认我对三角学真的很糟糕 出于上下文的考虑 我将添加我在这里提到的问题中的内容 参考问题 https stackoverflow com a 39429290 168492 https stackoverflow com a 394
  • IntersectionObserver是否支持水平滚动观察?

    我制作了几个垂直滚动 IntersectionObserver 模块 但我对水平滚动感兴趣 根将是 div 观察目标将是 img 我想观察当 img 放大但 div 保持视口宽度时的变化 我什至不确定移动 Safari 是否会将缩放后的图片
  • 为什么 setTimeout 在 Chrome 中触发两次,而在 IE 或 Firefox 中则不然?

    有人能告诉我为什么 javascript 函数 生成新号码 在 Chrome 中触发两次 但在 IE 或 Firefox 中则不会 使用 Chrome 20 0 1132 57 IE9 和 Firefox 13
  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • JavaScript 继承;调用和原型

    要在Javascript中实现继承 通常需要执行以下两个步骤 假设我有一个基类 Animal var Animal function name this name name 我现在想从中派生一个子类 Dog 所以我想说 var Dog fu
  • mongodb 聚合 - 累积字段的不同组值

    如果我有Player表格文件 name String score Int 我有Group文档 其中组代表玩家列表 groupName String players ObjectID 玩家可以属于多个组 我想做一个聚合Player文档 按以下
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • 如何从浏览器向服务器发送“页面将关闭”消息?

    我想向每个 html 文档添加一个脚本 JavaScript 该脚本向服务器发送两条消息 页面确实打开了 页面将关闭 此消息包含页面打开的时间 打开消息应在文档加载时 或加载完成时 发送 这是简单的部分 The close message
  • Rails 3.1+ 的 Jasmine 与 Mocha JavaScript 测试 [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我对茉莉花有经验并且非常喜欢它 有谁有 Jasmine 和 Mocha 的经验 特别是 Rails 的经验吗 我想知道是否值得转用 我已经在 J
  • 主页(网格)上的缩略图现在显得模糊。如何纠正?

    我不知道这看起来是否愚蠢 但从早上开始我就无法纠正这个突然出现在我的博客网站上的错误www candidopinions in http www candidopinions in 我有一个网格视图模板 其中博客文章中的特色图像作为调整大小
  • 使用 next.js 进行服务器端渲染与传统 SSR

    我非常习惯 SSR 意味着页面得到完全刷新并从服务器接收完整 HTML 的方法 其中根据后端堆栈使用 razor pub other 进行渲染 因此 每次用户单击导航链接时 它只会向服务器发送请求 整个页面将刷新 接收新的 HTML 这就是
  • 在 iOS 7 Safari 中,如何区分通过边缘滑动与后退/前进按钮的 popstate 事件?

    在 iOS 7 Safari 中 现在有两种后退 前进导航方式 使用底部的传统后退 前进按钮箭头或从屏幕边缘滑动 我正在使用动画在 ajax 应用程序中的页面之间进行转换 但如果用户通过边缘滑动进行导航 我不想触发该转换 因为这本身就是一个
  • 如何处理 MongoDB 的断开连接错误

    我在 Node js 进程中看到了这个未捕获的异常 Uncaught exception Error read ETIMEDOUT at TCP onStreamRead internal stream base commons js 16
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容

随机推荐

  • 从资源加载嵌入的动画光标

    我在资源中有一个动画光标文件 ani 并希望将其显示为我的应用程序中的光标 如何从资源中加载它 我在互联网上查找 但只有当你有一个真实的文件并且它没有嵌入到资源中时才可以显示它 这里的资源修改是 调用中的byte 变量资源 由 Yvan G
  • 带有滑动过渡的 jQuery Mobile ChangePage

    在处理 向右滑动 事件时 我似乎无法制作 反向 幻灯片效果 因此 下面的代码工作正常 但我希望当我进行 向右滑动 时 下一页将从左侧而不是右侧滑入 我确实搜索了文档并添加了reverse true as 正如它所建议的进入 向右滑动 mob
  • 跳到指令中间 - 在 IA-32 中

    为什么IA 32可以让我们跳到指令的中间 当我用汇编器编写时 如何使用这种架构特征进行优化 除了明显的情况外 我们喜欢将命令的编码保存在寄存器内 然后激活该命令 由于历史原因 IA 32 允许跳转到指令中间 x86 指令集是 8080 使用
  • AngularJS:我可以使用过滤器在 ng-repeat 中对数组进行分块吗?

    编辑添加一个明确的问题 我有一个一定长度的平面数组 我想将其放入 tr td 类型视图中 这也可能位于引导网格或类似的东西中 本质上我想在一系列长度为 n 的块中显示一个平面数组 这个问题有很多变体 但我还没有真正看到一个很好的解释 如何使
  • pygame 中的霓虹灯效果?

    我正在使用 pygame 项目 我需要我的游戏立方体具有霓虹灯效果 pygame 有没有一个函数可以制作霓虹灯效果或类似的东西 pygame draw rect win 255 0 255 neon Pygame 没有 发光 绽放 或 霓虹
  • 在 Android 中使用结构查询 (sq) 从 Google Spreadsheet API 检索数据时出现错误

    我正在 Android 中使用 Google Spreadsheet API 我成功完成了集成并能够检索行 但在搜索功能上遇到了一些问题 我正在对电子表格进行 3 4 种不同的搜索 问题是在我的电子表格中的某些列中 单词之间有空格 例如 H
  • C++ 同名函数的继承

    我有以下类声明 class human public void msg cout lt lt I am human n class John public human public void msg cout lt lt I am a Jo
  • 从 xml 中提取节点数据

    我有一个像这样的xml
  • 在 WooCommerce“我的帐户”订单表的新列中显示产品类别

    我想添加一个自定义列 以在 wooCommerce 中的订单历史记录表上显示产品类别 我找到了如何添加自定义列 但我似乎无法显示链接到此列中的订单的分类产品 对于这个例子 我只有 1 个产品 但如果我可以显示不止一种税 那就更好了 这是我发
  • 在项目中进行任何更改但升级 eclipse android sdk 后出现 java.lang.ClassNotFoundException [重复]

    这个问题在这里已经有答案了 前段时间我开发了一个相当简单的应用程序 目标是4 2 2 我让它在我的设备上正常工作 然后我停止了开发大约1个月 在最近的 Google I O 之后 我决定重新开始开发 我首先做的是打开 Android SDK
  • 检索 asp:TextBox 的值

    我有一个禁用的文本框 我正在使用 JavaScript 在客户端编辑其值 当我尝试检索服务器端的值时 它不会反映在客户端所做的更改 如果我将文本框的启用属性设置为 true 我可以检索该值 但用户可以放置焦点并编辑文本框 有没有一种明智的方
  • PHP 从数组中获取最高值

    我试图获取数组中的最大值 同时仍然保留项目标签 我知道我可以通过运行 sort 来做到这一点 但如果我这样做 我只会丢失标签 这使得它对我所需要的毫无意义 这是数组 array a gt 1 b gt 2 c gt 4 d gt 5 有任何
  • Lucene 4.0 IndexWriter 更新数字术语文档

    我只是想知道如何根据数字字段更新 删除 插入 文档 到目前为止我这样做了 LuceneManager updateDocument writer new Term id NumericUtils intToPrefixCoded sente
  • javascript解析浮点错误

    我正在尝试获取表的行总和 td1 价值 5 000 00 美元 td2 价值 3000 00 美元 我正在使用以下代码 var totalnum 0 num each function totalnum parseFloat this ht
  • 如何使用所需的用户库执行maven主类?

    我创建了一个 Maven 项目 其中只有一个类可用 我想在这个类中使用 jnetpcap API 为此 我遵循了jnet eclipse 设置使用设置 1 方法 用户库 的教程并创建了一个用户库并将其添加到我的项目中 JnetTest ja
  • 如何让机器人按住鼠标按钮一段时间?

    我正在使用 Java 使用 Robot 类生成鼠标按下操作 robot mousePress InputEvent BUTTON1 MASK robot mouseRelease InputEvent BUTTON1 MASK 但是 我希望
  • 如何在 Objective-C 中使用 Swift 结构体

    简而言之 我有一个存储应用程序常量的结构 如下所示 struct Constant static let ParseApplicationId xxx static let ParseClientKey xxx static var App
  • clearfsimport 不会删除组件根目录中的文件

    我使用此命令行将文件导入 VOB clearfsimport recurse rmname nsetevent filter
  • 如何有效地获取文件中的行数? [复制]

    这个问题在这里已经有答案了 我有一个大文件 它包括大约 3 000 20 000 行 如何使用 Java 获取文件中的总行数 BufferedReader reader new BufferedReader new FileReader f
  • 如何通过javascript下载pdf文件?

    我的 javascript 代码向我的 node js 服务器发出以下 AJAX 请求 var url node download var downloadRequest new goog net XhrIo downloadRequest