繁体   English   中英

如何使用节点js上传文件?

[英]How do I upload a file using node js?

我环顾四周,看了各种有关如何使用node / express上传文件的教程。 我觉得我在HTML或JQuery方面做错了。 我使用以下链接作为http://howtonode.org/really-simple-file-uploads

但是我收到错误:

TypeError: Cannot read property 'fileUpload' of undefined    at module.exports.fileCreate 

这是我的代码如下:

uploadcontroller.js

fs.readFile(req.files.fileUpload.path, function (err, data) {
    var newPath = __dirname + "/uploads/" + imgString;
    fs.writeFile(newPath, data, function (err) {
    });
});

html片段

<div class="form-group">
    <label for="fileUpload">Upload File</label>
    <input type="file" name="fileUpload" id="fileUpload">
</div>

我正在使用Sails框架(不确定这是否有所不同)

编辑:填写表格

<form role="form" class="uploadFileForm">
    <div class="form-group">
        <label for="fileTitleInput">Title</label>
        <input type="text" name="formTitleInput" id="formTitleInput">
    </div>
    <div class="form-group">
        <label for="fileDescriptionInput">Description</label>
        <textarea class="form-control" rows="4" id="fileDescriptionInput"></textarea>
    </div>
<div class="form-group">
        <label for="fileUpload">Upload File</label>
        <input type="file" name="fileUpload" id="fileUpload">
    </div>
    <button type="submit" class="btn btn-default" id="file-submit-btn">Publish to Web</button>
</form>
app.post('/upload', function(req, res) {

    fs.readFile(req.files.image.path, function (err, data) {

        var imageName = req.files.image.name

        /// If there's an error
        if(!imageName){

            console.log("There was an error")
            res.redirect("/");
            res.end();

        } else {

          var newPath = __dirname + "/uploads/fullsize/" + imageName;

          /// write file to uploads/fullsize folder
          fs.writeFile(newPath, data, function (err) {

            /// let's see it
            res.redirect("/uploads/fullsize/" + imageName);

          });
        }
    });
});
app.post('/', function(req, res) {
  console.log(req.files);
  fs.readFile(req.files.displayImage.path, function (err, data) {

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

仅供参考,“console.log(req.files)”将包含以下内容:

{ displayImage:
   { domain: null,
     _events: null,
     _maxListeners: 10,
     size: 84654,
     path: 'E:\\Users\\xyz\\AppData\\Local\\Temp\\90020831e2b84acb2d4851e4d4
2d77d5',
     name: 'ccc - 1.jpg',
     type: 'image/jpeg',
     hash: false,
     lastModifiedDate: Wed May 22 2013 07:47:39 GMT+0530 (India Standard Time),
     _writeStream:
      { domain: null,
        _events: null,
        _maxListeners: 10,
        path: 'E:\\Users\\xyz\\AppData\\Local\\Temp\\90020831e2b84acb2d4851e
4d42d77d5',
        fd: 4,
        writable: false,
        flags: 'w',
        encoding: 'binary',
        mode: 438,
        bytesWritten: 84654,
        busy: false,
        _queue: [],
        _open: [Function],
        drainable: true },
     length: [Getter],
     filename: [Getter],
     mime: [Getter] }
}

我遇到了同样的问题。 Sails没有识别req.files(undefined)。 所以你的问题似乎与Sails有关。 以下解决了我的问题(特别是Skipper文档)。

在0.9版本的Sails中,你可以在config / express.js文件中取消注释这一行:// bodyParser:require('express')。bodyParser,

在0.10版本中,使用req.file而不是req.files。 查看有关文件上传的测试版文档: http//beta.sailsjs.org/#/documentation/reference/Upgrading

请务必查看Skipper文档: https//github.com/balderdashy/skipper 您的Sails版本很可能会使用它来处理文件上传。

暂无
暂无

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

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