上传的文件位于(保存)在节点js的jquery file-upload-plugin中的哪个位置

时间:2012-11-21 01:01:29

标签: javascript

上传的文件位于(保存)在节点js的jquery file-upload-plugin中的哪个位置?您还可以使用jquery file-upload-plugin上传和保存视频文件吗?感谢

1 个答案:

答案 0 :(得分:1)

访问上传的文件

如果您使用的是Node和Express的最新版本,文件上传就是小菜一碟。我会支持这个说法,但在我们进一步说明之前,请确保您熟悉Express中的路线,请求和回复。

好的,现在让我们证明“小蛋糕”的主张是正确的。在我们的文件上传路由中,req参数具有可用的req.files。以下是req.files将包含的示例:

{
  displayImage: {
    size: 11885,
    path: '/tmp/1574bb60b4f7e0211fd9ab48f932f3ab',
    name: 'avatar.png',
    type: 'image/png',
    lastModifiedDate: Sun, 05 Feb 2012 05:31:09 GMT,
    _writeStream: {
      path: '/tmp/1574bb60b4f7e0211fd9ab48f932f3ab',
      fd: 14,
      writable: false,
      flags: 'w',
      encoding: 'binary',
      mode: 438,
      bytesWritten: 11885,
      busy: false,
      _queue: [],
      drainable: true
    },
    length: [Getter],
    filename: [Getter],
    mime: [Getter]
  }
}

在上面的req.files对象中,属性displayImage是HTML表单中文件字段的名称,req.files将包含每个有效HTML文件表单字段的一个属性。

文件对象包含服务器端验证的类型,大小和名称属性。

保存上传的文件

假设文件有效,则使用path属性进行下一步。该路径通常包含tmp文件夹中的位置。您的应用程序逻辑可能要求您访问文件的内容,或者只是将上传的文件移动到另一个位置。

fs.readFile(req.files.displayImage.path, function (err, data) {
  // ...
  var newPath = __dirname + "/uploads/uploadedFileName";
  fs.writeFile(newPath, data, function (err) {
    res.redirect("back");
  });
});

在fs.readFile回调中,我们有data参数,通过它我们可以访问文件的内容。上面的示例来自需要修改文件并将其保存在新位置的应用程序。因此fs.writeFile用于将数据写入newPath。

如果您的应用只需移动上传的文件而不修改内容,则可以使用fs.rename作为更简单的选项。