【问题标题】:How to passing params whit file upload and get it in node js Ionic 3如何通过文件上传传递参数并在节点js Ionic 3中获取它
【发布时间】:2019-07-18 22:34:45
【问题描述】:

服务器节点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();
    }
  );

前端 Ionic 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 返回{} 并且 req.file 只返回文件名和文件

【问题讨论】:

  • 我没有看到 req.params 写在服务器代码的任何地方。请问可以通过console.log(req.params)试试吗?
  • req.params 返回此{}
  • 你能不能把它放在代码中并在这里更新它!它会给出一个清晰的画面。
  • 它更新了..

标签: node.js ionic-framework


【解决方案1】:

您可以使用 带有 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
   }

【讨论】:

  • console.log(JSON.stringify(req.body)); === {} console.log(JSON.stringify(req.params)) === {} console.log(req.files.file) ==={ name: 'user_step4#upload', data: , size: 7275315, encoding: '7bit', tempFilePath: '', truncated: false, mimetype: 'multipart/form-data', md5: '89de88065be7f756eabae70e', mv: [Function: mv] }
  • 我不明白你的评论。有没有用?
  • 我将其更改为多部分表单数据,但它不起作用
  • 同样的代码对我有用。问题可能出在服务器端。
  • 什么代码返回你的参数?你有服务器端的快递应用吗?
猜你喜欢
  • 2020-01-13
  • 1970-01-01
  • 2020-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 2017-03-12
相关资源
最近更新 更多