返回下载文件的 Post 请求

2023-11-27

我正在将数据发送到我的服务器,该服务器根据请求创建一个 pdf 文件,该文件创建得很好,但我无法将文件发送回客户端。我正在使用 React 来提交表单

handleSubmit(event) {
event.preventDefault();
var body = {
  id: this.state.id,
  text: this.state.text
}
fetch('http://localhost:5000/pdf', {
            method: 'POST',
            body: JSON.stringify(body),
            headers: {
                'Content-Type': 'application/json'
            },
        }).then(function(file) {
          window.open(file.url);
        });
}

它的开幕http://localhost:5000/pdf,但由于我没有 GET 路线,因此无法下载任何内容。这是我的 POST 路线

router.post('/pdf', async function(req, res) {
  var makePdf = require('./file-create/pdf.js');
  makePdf(req, res);
});

文件返回为pdfDoc.pipe(res);

我不能只使用 GET 路由,因为我无法以这种方式发送数据,我怎样才能将此文件发送到客户端?


当您使用时,您正在调用 GET 请求window.open。这将在带有 URL 的新选项卡中打开该 URL。当您将其从 GET 更改为 POST 时,此操作将不起作用。

要解决这个问题,您可以使用downloadjs (https://www.npmjs.com/package/downloadjs)以允许您下载从服务器返回的 blob。

我在下面包含了一些示例代码。这包括带有获取请求的index.html 文件和用于返回简单pdf 的server.js。

索引.html

var body = {
  id: 1,
  text: 'hello world',
};

fetch('/download', {
  method: 'POST',
  body: JSON.stringify(body),
  headers: {
    'Content-Type': 'application/json'
  },
}).then(function(resp) {
  return resp.blob();
}).then(function(blob) {
  return download(blob, "CUSTOM_NAME.pdf");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/downloadjs/1.4.8/download.min.js"></script>

服务器.js

var express = require('express');
var app = express();

app.post('/download', function(req, res){
    res.download('./make-file/whatever.pdf');
});

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

返回下载文件的 Post 请求 的相关文章

  • 无法从角度路由器获取路径或 url

    我无法从 ActivatedRoute 或 Router 导入中获取 URL 或路径 它为路径 输出空白 为 URL 输出 我记得使用的是工作版本 唯一捕获正确路由的是Router events 我也无法订阅ActivatedRoute 中
  • Babel NodeJS ES6:语法错误:意外的令牌导出

    我正在尝试使用 babel 来运行我的 NodeJS 程序 其中包括 ES6 语法和 Colyseus 库的导出 但是 当我运行命令时 babel node server js 出现以下错误消息 export class MyRoom ex
  • 如何在js中将嵌套的html元素提取到同一级别

    我使用 javascript 并有一个 div 元素 里面有一些 html 标签 如下所示 一些元素是嵌套的 我想将它们保持在同一级别 第一个 html 是这样的 div p some text on here 1 i some itali
  • 如何使用 jquery/javascript 在 div 内进行选择

    有很多代码可以在页面中进行选择 但我想要一个代码来在 div 内进行选择 如果选择在我的 div 之外 该函数必须返回空字符串 有一个 jquery 插件仅适用于 textarea 而不适用于 div here http plugins j
  • Reactjs 中的嵌套注释

    我有以下 json comments id 1 comment text asdasdadasdsadsadadsa author adsfasdasdsad post id 1 ancestry null archived false c
  • 无法在react-native android中设置ShadowColor

    环境 环境 操作系统 macOS High Sierra 10 13 1 节点 8 9 1 纱线 0 17 10 npm 5 6 0 守望者 4 7 0 Xcode Xcode 9 2 内部版本 9C40b Android Studio 2
  • MeteorJS:用户集合如何公开新字段

    我在用户集合中添加了新字段 但是当我在客户端 Meteor user cart 中访问它时 cart 是我的新字段 其未定义 如何公开新字段 购物车 以便可以在客户端中访问 最简单的方法是添加一个null发布者将自动发送数据 无需订阅 请务
  • 访问原型中的“私有”变量

    JavaScript 是否可以创建一个可以在原型中访问的私有变量 我尝试了以下显然不起作用 http jsfiddle net TBfk4 因为bar只能从内部访问Foo而不是来自原型内部 function Foo var bar test
  • 打字稿 keyof 返回字符串数组

    假设我有一堂课 class Test propA propB propC 我想创建一个返回字符串数组的方法 并将其键入为仅 Test 类中存在的键 我该如何使用keyof特征 class Test propA propB propC get
  • 如何使用 d3.js 沿 GeoJSON 路径对对象进行动画处理?

    我正在使用 D3 js 从 GeoJSON 文件生成并渲染路径 效果很好 但现在我想沿着该路径为对象设置动画 我知道如何使用 D3 和标准 SVG 来做到这一点 创建过渡并设置其持续时间 对于过渡的每一帧 使用 Complete 查找沿路径
  • 在javascript中,对象和命名空间有什么区别?

    在读的时候 面向对象的 JavaScript https developer mozilla org en US docs Web JavaScript Introduction to Object Oriented JavaScript
  • Kendo Grid:取消编辑删除新行

    这里有一个demo http plnkr co edit X4ei0zPYiZ1H8AiCTy8B p preview对于我正在经历的行为 如果您编辑 id 为 1 的现有行 将文本更改为其他内容 然后按取消按钮 该行将正确恢复到之前的状态
  • close 似乎不适用于 WebSocket

    我有这个简单的 JavaScript 代码 window ws new WebSocket ws 127 0 0 1 8000 ws onopen function ws send hello Ruby 中的服务器如下所示 require
  • 如何更改 Dojo TabContainer 行为以仅打开外部链接而不是显示 ContentPane?

    我正在与一个TabContainer有几个不同的ContentPane孩子们 他们每个人都配备了href用于获取选择选项卡时显示的外部 AJAX 内容的参数 dojo addOnLoad function var tc nav new di
  • 如何将 Jitsi Meet 添加到 Vuejs

    我已在 public html 的正文中加载了 jitsi meet 脚本 并且我有一个组件 如下所示
  • 处理流星中的长服务器端计算

    我正在使用 jimp https www npmjs com package jimp https www npmjs com package jimp 在meteor JS中生成图像服务器端 换句话说 我正在使用递归算法 计算 图像的像素
  • XRegExp 没有后视功能?

    我需要在JavaScript中使用正则表达式的lookbehind 所以发现在 JavaScript 中模拟lookbehind 第 2 步 https gist github com slevithan 2387872 另外 我发现作者
  • javascript中的快捷方式融合优化

    我听说 lodash 和其他 javascript 库使用一种称为 快捷融合 的技术进行优化 但在任何地方都找不到该技术的详细解释 任何人都可以提供链接或举例解释 快捷方式融合 的含义吗 对于一个非常简短且不清楚的解释 https wiki
  • 使用 javascript 将 HTML 字符实体转换回常规文本

    问题说明了一切 例如 我们有 gt 我们需要 gt 仅使用 JavaScript Update 看来 jquery 是最简单的出路 但是 如果有一个轻量级的解决方案就好了 更像是一个能够自行完成此操作的函数 你可以这样做 String pr
  • 是否可以覆盖material-ui组件的默认道具?

    可以说我想要每一个Button组件来自material ui有默认的 propsvariant contained color secondary 这可能吗 这方面的文档在这里 https material ui com customiza

随机推荐

  • 如何在NumericUpDown控件中显示空值?

    我有一个 Windows 窗体应用程序 其中包括NumericUpDown控制与Minimum and Maximum相应地将值设置为 50 80 并执行步骤 1 当表单加载时NumericUpDown显示 50 我知道NumericUpD
  • r - 将输出从 sf::st_within 转换为向量

    我尝试使用 R 中的 sf 包来查看 sf 对象是否在另一个 sf 对象内st within功能 我的问题是这个函数的输出是稀疏几何二进制谓词 sgbp我需要一个向量作为输出 以便我可以使用dplyr之后打包进行过滤 这是一个简化的示例 o
  • VS2017 具有新的 getter/setter 语法:如何在 setter 中编写多行?/ [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我使用的是 NET Framework 4 5 2 VS2017 VS2017 为 getter 和 setter 提供了新的语法 现在带有 getter setter 的属性如下所示
  • 提交成功但上传无法在合并表单中使用

    在尝试将提交和上传合 并到一种表单中时 我在上传时遇到问题 但对于提交表单来说没有问题 jQuery Ajax oqcsubmit click function if oqc valid var params oqc serialize a
  • 如何在 R Markdown 中选择特定选项卡?

    我需要从中选择一个选项卡tabset在 R Markdown 文档中 使用 Shiny 运行时 我按照中的例子如何在Shiny中选择特定的tabPanel 并尝试将其适配为 R Markdown 我添加了ids 到选项卡集 选项卡 并在up
  • 对 Python argparse 参数组重新排序

    我在用着argparse我有一个自定义参数组required arguments 有什么方法可以更改帮助消息中参数组的顺序吗 我认为将必需的参数放在可选参数之前更符合逻辑 但没有找到任何文档或问题来提供帮助 例如 改变这个 usage fo
  • 将 csv 文件导入 Python 中的矩阵/数组

    我正在尝试将包含字符串和数字数据矩阵的大 csv 文件导入到 Python 中的数组 矩阵中 在 MATLAB 中 我曾经加载文件并将其简单地分配给一个矩阵 但在 Python 中似乎有点棘手 有人可以建议吗 我对 Python 还很陌生
  • 使用 msbuild 删除空目录

    如何递归处理路径 以便处理完成后路径下不存在空目录 例如 假设我们有C Dir1 Dir2 Dir3并且这些目录中都没有文件 结果应该是删除所有三个目录 我想在不使用自定义任务的情况下完成此任务 像这样的东西应该可以工作 但没有检查计算数千
  • 在自定义 UITableViewCell 中管理 UITextFields 的委托

    因此 我环顾四周 似乎没有任何内容可以准确解释执行此操作的正确方法 我在自定义 UITableViewCell 中有 7 个 UITextField 我的问题是 管理这些 UITextFields 委托的正确方法是什么 由于自定义单元格在技
  • PyCharm 不在主窗口上运行配置

    PyCharm 社区版在 Ubuntu 18 04 上如下所示 请注意 运行配置下拉列表不在我的主窗口上 搜索了文档 设置 视图 但无法弄清楚如何将其附加到主视图 还有其他人有这个问题吗 谢谢 LazyOne 你的回答让我注意到了导航栏 但
  • 如何使用淡入淡出动画设置屏幕亮度?

    是否可以在 iOS 5 1 上以动画方式显示屏幕亮度变化 我在用 UIScreen mainScreen setBrightness float 但我认为突然的改变很难看 当我尝试使用正在进行的先前动画将动画设置为另一个值时 我遇到了接受的
  • WooCommerce:如何显示“产品附加组件”扩展中的字段?

    我正在使用 WooCommerce 的 产品附加组件 1 扩展 它允许产品的自定义字段 这会自动显示在单个产品模板上 通过对单一产品模板的一些尝试和错误 它似乎挂在了某个地方woocommerce single product summar
  • 如何将本地时间字符串转换为 UTC?

    如何转换日期时间当地时间的字符串 to a UTC 时间字符串 我确信我以前做过这个 但找不到它 所以希望将来能帮助我 和其他人 做到这一点 澄清 例如 如果我有2008 09 17 14 02 00在我当地的时区 10 我想生成一个具有等
  • 是否可以检测移动浏览器的 GPS 位置? [复制]

    这个问题在这里已经有答案了 我正在制作一个针对手机的网站 并且希望在用户访问我的默认页面时获取用户当前的 GPS 纬度 经度 以便我可以向他们显示他们所在区域的结果 使用 ASP NET 可以实现这一点吗 See Also 从手机浏览器获取
  • 如何向 tableGrob 图添加标题?

    我有一个表格 我想在它上面打印一个标题 t1 lt tableGrob top 10 events by casualties cols c EVTYPE casualties rows seq 1 10 grid draw t1 这里也提
  • Spring和Hibernate突然将事务设置为只读

    我们有一个在 JBoss 4 2 3 上运行的应用程序 使用 Spring 2 5 2 和 Hibernate 3 2 6 ga 它在 Linux JEE01 2 6 16 60 0 54 5 smp 上运行 使用自己的用户 写入另一台机器
  • 在基于 Python 文本的 GUI (TUI) 中输入

    我一直在尝试在 python 2 7 中制作自己的基于文本的 UI 但我想到了一个关于输入的想法 所以我想到了这样的事情 input raw input input center 78 但粗略地说 光标在右侧很远 在我输入它之前才意识到它不
  • PHP CURL CURLOPT_SSL_VERIFYPEER 被忽略

    由于某种原因 我无法将 CURL 与 HTTPS 一起使用 一切都工作正常 直到我运行了curl 库的升级 现在 我在尝试执行 CURL 请求时遇到以下响应 SSL CA 证书有问题 路径 访问权限 根据此处发布的有关相关问题的建议 我尝试
  • 如何在 Eclipse IDE 中运行简单的 C 程序

    我已经下载了 Eclipse C C IDE 我需要在其中运行一个简单的c 程序 打印欢迎 在尝试运行该程序时 它会弹出一条错误消息 例如 Launch failed Binary not found 我需要安装任何编译器包 请帮助我做到这
  • 返回下载文件的 Post 请求

    我正在将数据发送到我的服务器 该服务器根据请求创建一个 pdf 文件 该文件创建得很好 但我无法将文件发送回客户端 我正在使用 React 来提交表单 handleSubmit event event preventDefault var