【问题标题】:HOw to save file with original file name with ng file upload on the server如何在服务器上使用 ng 文件上传以原始文件名保存文件
【发布时间】:2017-05-04 08:49:18
【问题描述】:

我正在尝试使用 ng file upload 上传我的文件,但它们在服务器上以一些不同的文件名上传。我希望它们以它们最初具有的文件名和正确的扩展名(.jpg、.pdf )。 下面是我的代码。 控制器:

$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'});

【问题讨论】:

标签: angularjs node.js multer ng-file-upload


【解决方案1】:

这不是 ng-upload 更改文件名,而是 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-27
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 2015-09-14
    相关资源
    最近更新 更多