【发布时间】:2015-12-28 23:59:37
【问题描述】:
我有一个表单,我在其中填写输入和文件,并使用 angularjs 将其作为 JSON 发送到 nodejs 服务器并将其存储到 mongodb 中。在本地主机中,它工作正常。我可以从浏览器上传文件并将其存储到本地存储中。然后,将文件的路径存储到 mongodb 中。
但是当我在 AWS EC2 中部署后执行相同操作时,文件不会出现。不过,mongodb 和 angularjs 的 http.post() 工作正常,因为我能够注册到我的网站,并且用户配置文件成功存储到 mongodb 中,以后也可以登录。问题出在哪里,我想不通? 提前致谢。如果需要任何 sn-ps,请在下方评论。
客户端:(在角度js中)
scotchApp.service('multipartForm', ['$http', function($http){
this.post = function(uploadUrl, data1, data2){
var fd = new FormData();
for(var key in data1)
fd.append(key, data1[key]);
fd.append("data2", JSON.stringify(data2));
$http.post('/upload', fd, {
transformRequest: angular.indentity,
headers: { 'Content-Type': undefined }
});
}
}])
服务器端:(Nodejs 服务器)
app.post('/upload', function(req, res){
var property = JSON.parse(req.body.data2);
var imgPaths = new Array(req.files.file1.path.substring(6),req.files.file2.path.substring(6),req.files.file3.path.substring(6),req.files.file4.path.substring(6),req.files.file5.path.substring(6),req.files.file6.path.substring(6));
property["imgPaths"] = imgPaths;
var id = req.body._id;
var longi = "-";
var lati = "-";
var geocoderProvider = 'opencage';
var httpAdapter = 'https';
var extra = {
apiKey: '4996751802785975c32ce8819418c376',
formatter: null
};
var geocoder = require('node-geocoder')(geocoderProvider, httpAdapter, extra);
geocoder.geocode(property.location, function(err, resp) {
try {
lati = resp[0].latitude.toString();
longi = resp[0].longitude.toString();
}
catch (excp) {
console.log(excp);
}
finally {
property['latitude'] = lati ;
property['longitude'] = longi ;
var propertyformObj = new PropertiesProfileModel(property);
propertyformObj.save(function (err, user) {
if (err) {
res.send('error');
}
else {
res.send('ok');
}
})
}
});
});
【问题讨论】:
-
你能把你的代码的相关部分贴出来吗? (客户端上传代码,接收控制器动作代码。)
标签: angularjs node.js amazon-web-services amazon-ec2 mean-stack