javascript - 以编程方式将文件从 node.js 上传到另一个 Web 服务器

标签 javascript node.js

我需要将文件从 node.js 应用程序推送到在别处运行的网络服务器,该服务器通过典型的上传机制接受文件。例如,假设接收服务器有一个具有如下形式的页面:

<form enctype="multipart/form-data" action="upload.php" method="POST">
 file: <input name="uploaded" type="file" /><br />
 name: <input type="text" name="filename" /><br />
 <input type="submit" value="upload" />
 </form>

如果用户选择一个文件,然后在文本输入字段中给出文件名,该文件将通过 upload.php(我不控制)上传到服务器,并保存为提供的名称。 (表格上可能还有其他项目,但为简单起见,我只显示这些项目)。 php 脚本将以“ok”或“error ...”(带有错误)的简单文本响应进行响应。

现在,我希望能够以编程方式将文件从 node.js 发送到该 php 脚本。该文件(在 node.js 端)可能存在也可能不存在于文件系统中,或者它可能是来自其他地方的东西,例如我可能会从 url 中提取它,它可能是由用户上传的,等

我已经看到一些与此相关的内容,但我不确定如何处理参数(文件名等),也不确定在选项对象中提供什么。此示例还假定它来自文件系统文件,正如我所说,情况可能是这样,也可能不是。

fs.createReadStream(filename).pipe(http.request(options, function(response) {
}));

最佳答案

我最终只使用了“海报”模块,这让事情变得简单了。这是对海报调用的薄包装。 “fileId”是表示文件的表单元素的名称,其他参数只是放在“fields”对象中。

var _poster = require('poster');

var uploadFileToRemoteServer = function (remoteScript, filename, fileId, fields, cb) {
    _poster.post(
      filename,
      {
        uploadUrl: remoteScript,
        method: "POST",
        fileId: fileId,
        fields: fields || {}
      },
      function (err, r) {
        if (err) {
        } else {
          if(cb)
            cb(r);
        }
      });
  }

关于javascript - 以编程方式将文件从 node.js 上传到另一个 Web 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10670459/

相关文章:

javascript - 克隆行及其事件javascript

javascript - 使用 FileTransfer 插件 Phonegap 在 Android 设备上保存 PDF 的位置

javascript - 001 形式的数字

javascript - 通过标签名称获取元素的子元素长度

php - 使用 NodeJS 加密错误解密 PHP openssl_ecrypt

javascript - 使用显示 :none still shows even it is meant to show when the screen resized using media query 的响应式导航栏

javascript - 如何在 div(或类似的东西)上使用 ngChange

node.js - Node zip 文件夹路径错误

node.js - 发送推送通知后应用卡在 'Enter PEM pass phrase'

javascript - 加载项目中的json文件到app.js