我不知道如何通过 angular $http 发布。为什么?我想 multer 解析和存储我的文件和角度,以便在完成后获取副本。更好的是,我很乐意让 angular 获取一个副本,然后将其传递给服务器。
我可以使用以下代码段上传文件:
// view (jade)
.container
form(action="/upload", method="POST", enctype="multipart/form-data")
input(type="file", name="f")
input(type="submit", value="Upload")
// post route (express)
var multer = require('multer');
var upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.single('f'), function(req, res) {
console.log(req.file);
});
使用任何示例文件运行它,将我想要的 json 返回到控制台,并且图像成功存储在正确的目录中。然而:
// view (jade)
form(enctype="multipart/form-data" ng-submit="uploadFile(file)")
input(type="file", name="f", ng-model="file")
input(type="submit", value="Upload")
// ctrl (angular)
$scope.uploadFile = function(file) {
console.log(file);
$http.post('/upload', file);
};
// post route (express)
var multer = require('multer');
var upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.single('f'), function(req, res) {
console.log(req.file);
});
这会在两个控制台输入上返回 undefined,即使我没有更改文件,我只是更改了它的发送方式。
这让我两个相信两件事之一:
提交的数据不是我想的那样。如果是这样,那是什么?日志上没有任何内容。
或者
提交的数据以某种方式被角度改变。如果是这种情况,怎么办?日志上再次没有打印任何内容。