2017-05-04 38 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

相关问题