node.js - 如何通过文件上传传递参数并在节点js Ionic 3中获取它
问题描述
服务器节点JS文件上传whit multer:
var multer = require('multer');
var storage = multer.diskStorage({
destination: function (req, file, callBack) {
console.log(req.body);
callBack(null, 'public/images/');
}, filename: function (req, file, callBack) {
callBack(null, 'someName');
}
});
var upload = multer({ storage: storage }).single('file');
outer.post('/uploads',uploads.single('file'),
function(req, res) {
//console.log(JSON.stringify(req.files.file));
console.log('/////////////////////////////////');
console.log(JSON.stringify(req.body));
console.log(JSON.stringify(req.params))
console.log(req.files.file)
var base64Data = req.files.file.data.toString('base64').replace(/^data:image\/jpeg;base64,/, "");
//console.log(base64Data);
var time = Date.now().toString()+"out.jpeg" ;
fs.writeFile('public/images'+"/"+time, base64Data, 'base64', function(err) {
console.log(err +' §§§§§§§§§§§' );
});
res.status(204).end();
}
);
前端离子 3:
var name = "upload";
var par = {
token : this.myToken ,
contenu_titre : this.contenu_titre ,
contenu_text : this.contenu_text ,
contenu_type : 'img' ,
} ;
let option: FileUploadOptions = {
params : par,
fileKey:'file',
mimeType:'image/jpeg',
httpMethod:'POST',
fileName:'user_step4#'+name
};
let loader = this.loadingCtrl.create({
content: "Uploading...."
});
loader.present();
const fileTransfer:FileTransferObject = this.transfer.create();
// console.log('filename'+this.curfilename);
fileTransfer.upload(this.photo ,encodeURI(this.linkPic+"/publication/uploads"),option).then((result)=>
{
alert('uploaded')
console.log('success');
console.log(result);
loader.dismiss();
}).catch(error=>{
loader.dismiss();
alert(error);
console.log('uploaderror');
console.log(error.message);
});
}
我想在服务器中获取参数值,每次未定义或为空我想从我的文件中获取一些参数以将参数保存在我的数据库中。上传工作正常,但没有得到参数 req.body return {} 和 req.file 返回文件名和文件
解决方案
您可以将参数与 FileTransferOptions一起使用以随文件一起发送参数。 使用 mimeType: "multipart/form-data"指定该请求包含多种类型的数据
var options =
{
fileKey: "file",
fileName: filename,
chunkedMode: false,
mimeType: "multipart/form-data",
params: {
"full_name": this.userForm.value.u_name,
"email": this.userForm.value.u_email,
"country": this.userForm.value.u_country,
"state": this.userForm.value.u_state,
"city": this.userForm.value.u_city,
"pincode": this.userForm.value.u_pincode,
"fax": this.userForm.value.u_fax,
"address": this.userForm.value.u_address,
}
};
transfer.upload(this.photo, this.yourURL, options).then(data =>
{
//Handle the response from the server
}
推荐阅读
- apache-kafka - 从 kafka 摄取 timescaleDB 中的数据
- php - 使用 PHP 从 .txt 文件中的 url 列表中获取 http 标头
- javascript - 如果未安装应用程序,如何将用户重定向到应用程序商店 iOS 13
- javascript - 如何根据值更改点/线?
- swift - 有没有办法分配一个按钮在文本字段中移动
- sql - Oracle:查询以查找产品特定季度是否没有定价记录
- c# - C#如何在do while循环中更改列表索引值
- php - 从 url 中带有 [] 的变量中获取值
- r - R 在 .jsonl 文件中读取速度非常慢
- r - 使用 base::readline 时使用 ESC 键退出功能时的异常行为