我正在尝试使用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'));
并且它一直返回“Undefined is not a function” (指的是.single())
如果我将.single删除
multer({ dest: 'uploads/' });
此错误消息已消失,但当然文件本身变为未定义,然后没有上传任何内容。
一天工作,伙计! 显然需要帮助:'(
答案 0 :(得分:1)
这就是我使用<VirtualHost *ipaddress*:*port*>
DocumentRoot "/var/www/apigility/public"
<Directory "/var/www/apigility/public">
AllowOverride All
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
的方式,希望这有助于您:
(创建一个目录并使用每个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
这对我来说很有效,希望你也可以适应它。我理解沮丧,因为它也花了一些时间才能做对。
答案 1 :(得分:1)
您安装了旧版本。您尝试使用的API仅在最新版本中引入(可能从v1.0.0开始)。
您可能会检查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");
});
}
}]);
是否限制安装了package.json
的版本。
我还应该指出,升级时需要稍微修改multer
个选项:multer
和onFileUploadStart
不再存在,onFileUploadComplete
现在是{ {1}}(但使用不同的异步函数签名)。