1

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

4

1 回答 1

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 可以用作更简单的选项。

于 2012-11-21T01:09:11.233 回答