2017-05-04 39 views
1

我想上傳我的文件與ng文件上傳,但他們上傳與服務器上的一些不同的文件名。我希望他們得到保存與文件名,它們最初具有正確的擴展名(.jpg,.pdf)。 以下是我的代碼。 控制器:如何保存文件與服務器上的ng文件上傳的原始文件名

$scope.uploadPic = function (file) { 
     $scope.advert.userDetails={ 
     "name":userDetails.name, 
     "email":userDetails.email, 
     "role":userDetails.role 
    } 
     file.upload = Upload.upload({ 
      url: '/api/uploaders/uploads', 
      method: 'POST', 
      fields: { 
       details: $scope.advert 
      }, 
      file: file, 
      fileFormDataName: 'photo' 
     }); 

    file.upload.then(function (response) { 
     console.log("Postcontroller: upload then "); 
     $timeout(function() { 
      file.result = response.data; 
     }); 
    }, function (response) { 
     if (response.status > 0) 
      $scope.errorMsg = response.status + ': ' + response.data; 
    }); 

    file.upload.progress(function (evt) { 
     // Math.min is to fix IE which reports 200% sometimes 
     file.progress = Math.min(100, parseInt(100.0 * evt.loaded/evt.total)); 
     console.log("PostController: upload progress " + file.progress); 
    }); 
      file.upload.success(function (data, status, headers, config) { 
     // file is uploaded successfully 
     console.log('file ' + config.file.name + 'is uploaded successfully. Response: ' + data); 
     console.log(data); 
    }); 

} 

API:

var multer = require('multer'); 
var upload = multer({ dest: 'server/uploads/images'}); 
+0

貌似multer自動更改文件名。檢查此:http://stackoverflow.com/questions/32654578/retaining-image-file-name-and-extension-after-upload-in-node-js-express-using – tomek550

回答

0

它不NG-上傳,更改文件名,它的multer。這是出於安全原因。
簡而言之,你不想讓別人知道他們上傳文件的確切路徑 - 如果它是惡意的?他們可以潛在執行它。

如果你真的想,但是,您可以在API方面做到這一點:

var multer = require('multer'); 

var storage = multer.diskStorage(
    { 
     destination: 'server/uploads/images', 
     filename: function (req, file, cb) { 
      cb(null, file.originalname); 
     } 
    } 
); 

var upload = multer(storage); 
+1

非常感謝man.I找到解決方案太。 – Akshay

相關問題