У меня возникли проблемы с загрузкой в формате PDF, когда я загрузить его (я использую ng-file-upload
) файл в формате JSON, что reachs express.js является:Изменить имя файла при использовании экспресс/multer
{ fieldname: 'file',
originalname: 'db.pdf',
encoding: '7bit',
mimetype: 'application/pdf',
destination: './client/public/docs/transactions/',
filename: '8a3fe7cb7369d9cffa8e17b162ec3d6b',
path: 'client\\public\\docs\\transactions\\8a3fe7cb7369d9cffa8e17b162ec3d6b',
size: 9179145 }
Я бы хотел изменить название свойства, которое я посылаю от угловой выразить, вот все настройки:
HTML элемент:
<div ngf-select="vm.uploadPdf($file, $errFiles)"
ngf-pattern="'.pdf'"
accept="application/pdf" ngf-max-size="20MB">Select ...
</div>
угловая функ uploadPdf
(Ctrl, как VM):
function uploadPdf(file, errFiles) {
vm.pdf = file;
vm.errorFile = errFiles && errFiles[ 0 ];
if (vm.pdf) {
Upload
.upload({
url: '/upload',
data: {
file: vm.pdf,
new_file_name: vm.new_name//this is the filename I want
}
})
.then(
function (response) {
$timeout(function() {
vm.pdf.result = response.data;
});
}, function (response) {
if (response.status > 0) {
vm.errorQuedanPdfUpload = response.status + ': ' + response.data;
console.log(vm.errorQuedanPdfUpload);
}
}
);
}
}
экспресс:
var express = require('express'),
router = express.Router(),
util = require('util'),
multer = require('multer');
var storage = multer.diskStorage(
{
destination: './uploads/',
filename: function (req, file, cb) {
//req.body is empty...
//How could I get the new_file_name property sent from client here?
cb(null, file.originalname);
}
}
);
var upload = multer({ storage: storage });
router.route('/upload')
.post(upload.single('file'), post);
function post(request, response) {
response.json({ message: 'Files Uploaded!' });
}
Там нет никаких проблем с угловой. Multer не сохраняет расширение при загрузке файла. –
Проверьте это: https://github.com/expressjs/multer/issues/170 –
Используйте ответ, указанный ricardomoura в приведенной выше ссылке, чтобы выполнить вашу задачу. –