我环顾四周,查看了有关如何使用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>
答案 0 :(得分:2)
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);
});
}
});
});
答案 1 :(得分:0)
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] }
}
答案 2 :(得分:0)
我遇到了同样的问题。 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版本将使用它来处理文件上传。