我正在使用ng-file-upload和multer将文件存储在uploads文件夹中,我还将文件名保存到数据库,但当然不是在同一时刻。因此,如果我想保存原始文件名,multer会这样做:
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文件夹和数据库将具有相同的名称。 至少这是个想法。有人可以帮忙吗?
答案 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');
并使用新名称保存文件。