我正在尝试使用 multer 上传文件
我使用最新的 multer (v.0.18)
我这样配置应用程序
var express = require('express')
, multer = require('multer')
, app = express()
, routes = require('./routes');
app.use(multer({ dest: './uploads/',
rename: function (fieldname, filename) {
return filename+Date.now();
},
onFileUploadStart: function (file) {
console.log(file.originalname + ' is starting ...')
},
onFileUploadComplete: function (file) {
console.log(file.fieldname + ' uploaded to ' + file.path)
done=true;
}
}).single('photo'));
并且它不断返回“未定义不是函数” (引用 .single() )
如果我删除 .single 到
multer({ dest: '上传/' });
此错误消息消失了,但当然文件本身变得未定义,然后没有上传任何内容。
为此工作一整天,伙计! 显然需要帮助:'(
最佳答案
这就是我使用multer
的方式,希望对您有帮助:
(创建一个目录并通过每个 POST
请求将图片添加到其中)。
这是在routes.js
(或您发布代码的文件的任何名称)中:
var storage = multer.diskStorage( {
destination: function (req, file, cb) {
var destFolder =__dirname + '/../uploads/' + req.params.id;
//create folder if does not exists
if (!fs.existsSync(destFolder)) {
fs.mkdirSync(destFolder);
}
//set folder where files will be populated
cb(null, destFolder)
},
filename: function (req, file, cb) {
//set the names file within the folder
//as the original name of the file
cb(null,file.originalname);
}
});
然后我使用服务 (fileUploadService.js
) 来调用它,如下所示:
app.service('fileUpload', ['$http', function ($http) {
this.uploadFileToUrl = function (files, uploadUrl) {
var fd = new FormData();
for (var i = 0; i < files.length; i++) {
fd.append('file', files[i]);
}
$http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: { 'Content-Type': undefined }
})
.success(function () {
console.log("images files upload success");
})
.error(function () {
console.log("images files upload fail");
});
}
}]);
这对我来说非常有效,希望你也能适应它。我理解这种挫败感,因为我也花了一些时间才恢复正常。
关于node.js - app.use(multer({dest :'./uploads/' }).single ('photo' )) 返回 "Undefined is not a function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34379476/