离子原生文件传输 - 文件上传 - 节点js表达服务器但req.files未定义

时间:2017-08-11 10:55:37

标签: node.js express ionic-framework file-upload

我是离子框架开发的初学者。

这是我的离子应用程序的流程。 - 从文件夹中选择图像,然后按“上传图片”按钮。 - 我使用离子原生文件传输上传到Nodejs express服务器。

这是我的代码。

//离子页面 https://www.dropbox.com/s/k1nittp0p8t4ay3/item-create.rar?dl=0

//节点js源 https://www.dropbox.com/sh/0zd9ydk0uhhz5g7/AABIg9S7hV6XiIzrMTj8FKA2a?dl=0

要点:     app.post('/ upload',function(req,res)),uploadImage()

//ionic3-item.js
      uploadImage()   //When press upload button
      {

          const fileTransfer:FileTransferObject = this.transfer.create();

          let option: FileUploadOptions = {
            fileKey:'file',
            fileName:'name.jpg',
            mimeType:'image/jpeg'
          };
          fileTransfer.upload(this.fileurl, encodeURI("http://192.168.1.249:8080/upload"),option);

      }
    }

    //This Node js  server code.      

    //route/ index.js
    module.exports = function(app, Article)
    {

        //Uploaded Article------------------This part -------------------------
        app.post('/upload', function(req,res){            
            console.log(req.files);
        });   

    }

但是req.files是未定义的。 我想知道如何处理来自离子应用程序的上传文件。 请帮忙。

感谢。

1 个答案:

答案 0 :(得分:0)

这是客户来源。

var name = "upload";  

let option: FileUploadOptions = {
  fileKey:'file',
  mimeType:'audio/3gp',
  httpMethod:'POST',
  fileName:'user_step4#'+name
};

this.loader = this.loadingCtrl.create({



  content:'登录中...',



 });


this.loader.present();

const fileTransfer:FileTransferObject = this.transfer.create();

console.log('filename'+this.curfilename);

fileTransfer.upload(this.file.externalRootDirectory+this.curfilename, encodeURI(localStorage.getItem('GlobalIP')+"/upload"),option).then((result)=>
{
  console.log('success');
}).catch(error=>{
this.loader.dismiss();      
console.log('uploaderror');
console.log(error.message);  
});   
}

这是服务器代码

var multer      = require('multer');


var storage = multer.diskStorage({
destination:function(req, file, cb)
{
    console.log('uploadpath:'+file.originalname);

var pathname = file.originalname.split('#');
    console.log(file.originalname);
var path = pathname[0].replace('_','/');


console.log(path);

    cb(null,'public/resources/'+path);

},filename:function(req,file,cb)    
{
   var pathname = file.originalname.split('#');
   var filename = pathname[1];
   console.log(filename);
if(filename!=undefined)
        cb(null, filename);            
}
});


//For multipart/form-data Uploading
var upload = multer({storage:storage});

app.post('/upload',upload.single('file'), function(req,res,next)
{
    console.log("uploaded");
    res.json({result:1});

});

感谢阅读。