【发布时间】:2016-04-07 04:49:54
【问题描述】:
到目前为止,我已经接受了我的 HTML 表单中的文件,并使用 ng-file-upload 模块通过 $http.post 以角度发布。现在我想在 Mongoose 中接受这个文件并将其存储到我在 MongoLab 上托管的 NoSQL MongoDB 中。
我已经阅读了这个名为 Multer 的模块并遵循了基本文档,但目前只有我一个人。在我解释问题的开始之前,让我发布我的代码:
我的 HTML 表单:
<form name="upForm">
<fieldset>
<legend>Upload files here</legend>
<label>Insert File Here:</label>
<input type="file" ngf-select ng-model="exFile" name="file" ngf-accept="'.cs'" required>
<i ng-show="upForm.file.$error.required">*required</i>
<div class="alert" ng-show="file.$error === 'pattern'">
file type is not accepted
</div>
<br />
<button ng-disabled="!upForm.$valid" ng-click="uploadExercise(exFile)" class="btn btn-default">Submit</button>
<span class="progress" ng-show="picFile.progress >= 0">
<div style="width:{{exFile.progress}}%" ng-bind="picFile.progress + '%'"></div>
</span>
<span ng-show="picFile.result">Upload Successful</span>
</fieldset>
</form>
我的 Angular 代码:
$scope.uploadExercise = function (file) {
console.log(file);
var fd = new FormData();
fd.append('file', file);
$http.post(url+"/Upload", fd,{
transformRequest: angular.identity,
header:{'Content-Type': undefined},
enctype:'multipart/form-data'
}).success(function () { }).error(function () { });
console.log(fd);
};
控制台日志返回正确的文件对象。
到目前为止的猫鼬:
var mongoose = require("mongoose");
var express = require("express");
var multer = require('multer');
var upload = multer({ dest: 'Uploads/' });
var bodyparser = require("body-parser");
var app = express();
mongoose.connect("connection-string");
app.use(bodyparser.json());
app.post('/Upload', upload.single('solution') ,function (req, res, next) {
console.log(req.file);
});
这个console.log 不断返回未定义。所以某事,某处出了大错。请帮帮我!
我想在我的 Mongoose 中接收此文件并将其存储到 MongoDB 中,我以前从未这样做过,并且似乎无法找到 Multer 的任何体面的文档或任何体面的解释来存储与我的案例相关的文件。我究竟做错了什么?我应该怎么做?
【问题讨论】:
标签: javascript angularjs node.js mongodb mongoose