【发布时间】:2016-10-18 12:30:24
【问题描述】:
我(非常)是 Angular MEAN 的新手,我正在尝试上传文件(特别是 pdf)并将其保存到服务器。我知道这可能是一个愚蠢的问题,但我在服务器上找不到任何关于如何将上传的文件实际保存到服务器存储的示例
我使用来自https://github.com/danialfarid/ng-file-upload 的 ng-file-upload 指令,Express 用于服务器,以及 ofc,AngularJS 用于文件上传。
发布更新!!见下文
更多信息:我正在为这个项目使用 Yeoman 的全均值堆栈生成器
更新: 我尝试使用 multer (https://github.com/expressjs/multer) 将上传的文件保存到服务器。尝试上传文件时出现此错误(返回 500 错误)
Error: Unexpected field
at makeError ({proj_folder}/node_modules/multer/lib/make-error.js:12:13)
at wrappedFileFilter ({proj_folder}/node_modules/multer/index.js:39:19)
at Busboy.<anonymous> ({proj_folder}/node_modules/multer/lib/make-middleware.js:112:7)
at emitMany (events.js:127:13)
at Busboy.emit (events.js:201:7)
at Busboy.emit ({proj_folder}/node_modules/busboy/lib/main.js:31:35)
at PartStream.<anonymous> ({proj_folder}/node_modules/busboy/lib/types/multipart.js:213:13)
at emitOne (events.js:96:13)
at PartStream.emit (events.js:188:7)
at HeaderParser.<anonymous> ({proj_folder}/node_modules/dicer/lib/Dicer.js:51:16)
at emitOne (events.js:96:13)
at HeaderParser.emit (events.js:188:7)
at HeaderParser._finish ({proj_folder}/node_modules/dicer/lib/HeaderParser.js:68:8)
at SBMH.<anonymous> ({proj_folder}/node_modules/dicer/lib/HeaderParser.js:40:12)
at emitMany (events.js:127:13)
at SBMH.emit (events.js:201:7)
更新的 HTML
<form accept-charset="UTF-8" class="form" name="form" ng-submit="$ctrl.submitForm(form)"
enctype="multipart/form-data">
...
<input ngf-select ng-model="$ctrl.paperFile" ngf-model-options="{allowInvalid: true}" name="paper" ngf-accept="'application/pdf'" required="" type="file" >
...
</form>
submitForm方法
...
this.Upload.upload({
url:'/paperUpload',
method: 'POST',
file: this.paperFile,
fields:{
_id:this.user._id
}
})
.then(function(resp){
console.log('Success upload');
console.log(resp.data);
}, function(error){
console.log('fail upload');
console.log(error);
}, function(evt){
console.log('upload on progress');
console.log(evt);
});
服务器路由:
var express = require('express');
var multer = require('multer');
var router = express.Router();
var upload = multer({dest:'uploads/',
rename: function(fieldname, filename){
return filename+"_"+Date.now();
}});
router.post('/paperUpload', upload.single('paper'), uploadPaper);
...
//method to upload
export function uploadPaper(req,res){
res.status(204).end();
}
创建了“uploads”文件夹,但文件没有上传,总是返回失败
任何帮助表示赞赏, 谢谢
【问题讨论】:
标签: javascript angularjs file-upload multer ng-file-upload