簡體   English   中英

使用MEAN堆棧將文件上傳到AWS EC2失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM