繁体   English   中英

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

[英]Uploading a file programmatically, from node.js, to another web server

我需要将文件从node.js应用程序推送到其他地方运行的Web服务器,该服务器通过典型的上载机制接受文件。 例如,假设接收服务器有一个页面,其形式如下:

<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端)可能存在也可能不存在于文件系统中,或者它可能是来自其他地方的东西,例如我可能从网址中删除它,它可能是由用户上传的,等等

我已经看到了这些方面的一些东西,但我不知道如何处理参数(文件名等),也不确定在options对象中提供什么。 此示例还假设它来自文件系统文件,正如我所说,可能是也可能不是。

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);
        }
      });
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM