【问题标题】:dropzone nodejs file uploaddropzone nodejs文件上传
【发布时间】:2014-06-13 03:13:44
【问题描述】:

我很想使用 DropZone 将文件上传到我的 nodejs 服务器。但是,当帖子到达我的 nodejs 服务器时,我不知道如何获取文件句柄。以下是我在 html 中实例化 DropZone 的方法:

<form action="/file-upload" class="dropzone" id="logoDropZone">
  <input type="hidden" name="userName" value="user"/>
</form>

然后,在我的 nodejs 服务器中,我有以下代码:

app.post('/file-upload', function (request, response) {
    console.log("Route: '/file-upload' ");
    console.log("File upload request from user: " + request.body.userName);
    // Get a file handle, read the file and then write it out to the file system.

    ...  

  });

我可以看到这段代码正在执行。我还可以通过请求对象访问输入字段中的值(请参阅隐藏的输入)。但是,如何访问文件本身以便将其写入服务器文件系统?

【问题讨论】:

  • 把它放在你的
    属性中:enctype="multipart/form-data"

标签: javascript node.js file-upload dropzone.js


【解决方案1】:

我找到了这个问题的答案。以下代码将文件上传到服务器:

app.post('/file-upload', function (request, response) {

  fs.readFile(request.files.file.path, function(err, data) {

    var newPath = __dirname + "/public/img/xspectra/customlogo.png";
    fs.writeFile(newPath, data, function (err) {
      console.log("Finished writing file..." + err);
      response.redirect("back");
    });

  });

});

为了避免其他人陷入同样的​​问题,我将解释我做错了什么:

1) 虽然表单元素没有“name”属性,但可以通过名称“file”在节点请求对象中访问文件。这可以在上面的代码中看到:

request.files.file.path

其中:“文件”是表单的“名称”。

2) 此代码是在以下网站上找到的(在下面给予赞扬并提供建设性的批评):http://howtonode.org/af136c8ce966618cc0857dbc5e5da01e9d4d87d5/really-simple-file-uploads

虽然我非常感谢创建文档的所有者,但它可以使用一些改进来减少混乱。主要是需要更新文档以明确解释上面的点号'1)'。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多