gpt4 book ai didi

angularjs - 如何使用 ng 文件上传到服务器上以原始文件名保存文件

转载 作者:太空宇宙 更新时间:2023-11-04 02:07:13 26 4
gpt4 key购买 nike

我正在尝试使用 ng 文件上传来上传我的文件,但它们在服务器上以不同的文件名上传。我希望它们以原来的文件名和正确的扩展名(.jpg、.pdf)保存。下面是我的代码。 Controller :

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

最佳答案

这不是 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);

关于angularjs - 如何使用 ng 文件上传到服务器上以原始文件名保存文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43778068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com