ng-file-upload如何使用Upload.rename(file,newName)

时间:2015-11-14 06:49:08

标签: multer ng-file-upload

我正在使用ng-file-upload和multer将文件存储在uploads文件夹中,我还将文件名保存到数据库,但当然不是在同一时刻。因此,如果我想保存原始文件名,mul​​ter会这样做:

filename: function (req, file, cb) {
cb(null, file.originalname);

我可以用

cb(null, file.originalname + '-' + Date.now());

使名称唯一,但数据库中的文件名(取自ng-file-upload服务)是不同的。 我想在github / danialfarid / ng-file-upload页面上使用Upload.rename(file,newName)但我尝试使用它的所有尝试都失败了。 这是ng-file-upload代码(第一部分)

$scope.uploadPic = function(files) {
        for(var i = 0; i < $scope.files.length; i++) {
          var $file = $scope.files[i];
          (function(index) {
            $scope.upload[index] = Upload.upload({
              url: '/',
              method: 'POST',
              file: $file,
            }).progress(function (evt) {
              $scope.files[index].progress = Math.min(100, parseInt(100.0 * evt.loaded / evt.total));
            }).then(function (response) {
              $timeout(function () {
                $file.result = response.data;

我试过了var newName = $file.name + '-' + Date.now()

但我不确定如何申请Upload.rename(file, newName)

我想如果我在multer抓住它之前设置了新名称,那么uploads文件夹和数据库将具有相同的名称。 至少这是个想法。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

在上传选项中,将文件密钥设置为文件名,并对multer选项使用相同的密钥,例如:

如果你的ng-file-upload选项有这个:

$scope.upload[index] = Upload.upload({
          url: '/',
          method: 'POST',
          nameOfImage: $file,
        })
对于嫁妆,你也应该有。
upload.single('nameOfImage')

我尝试使用multer v1.2.0和ng-file-upload 12.2.12

答案 1 :(得分:0)

我使用的是旧版本的ng-file-upload(7.X.X),在ng-file-upload.js中没有这个

this.rename = function (file, name) {
    file.ngfName = name;
    return file;
  };

我更新到版本10.0.2 所以现在我可以使用Upload.rename($file, 'preview1.jpg'); 并使用新名称保存文件。