[英]File Upload using MEAN stack to AWS EC2 fail
我有一個表單,其中我將輸入和文件一起填充,並使用angularjs將其作為JSON發送到nodejs服務器,並將其存儲到mongodb中。 在本地主機中,它的工作正常。 我可以從瀏覽器上傳文件並將其存儲到本地存儲中。 然后,將文件的路徑存儲到mongodb中。
但是,當我在AWS EC2中部署后執行相同的操作時,這些文件就不會出現。 但是,由於能夠登錄到我的網站,mongodb和angularjs的http.post()可以正常工作,並且用戶配置文件已成功存儲到mongodb中,以后也可以登錄。 問題出在哪里,我無法解決? 提前致謝。 如果需要任何摘錄,請在下面評論。
客戶端:(在angular 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');
}
})
}
});
});
最好的猜測是快速服務器進程可能沒有寫文件夾的權限。 運行chmod 777 foldername,以向要在其中存儲文件的文件夾的所有用戶授予所有訪問權限。 然后測試它是否有效。 如果是這樣,那么您就知道這是一個權限問題。 PS這些步驟僅用於調試問題。 授予對文件夾的正確權限。 不要將權限保留為777,因為這可能是一個嚴重的安全問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.