将文件从angular上传到node.js

时间:2017-08-19 06:55:47

标签: node.js angular express ionic3 ionic-native

我是这个新手,任何人都可以解释一下,如果我从角度点击API端点发送图像/视频。我应该如何在express.js中编写route.post路由来获取传入的图像/视频。

我正在使用FileTransfer Ionic本机插件将捕获的图像/视频发送到我的服务器。

this.mediaCapture.captureImage()
    .then((data: MediaFile[]) => {
            let option = {
            enableHighAccuracy : true 
          }

          this.geolocation.getCurrentPosition(option)
          .then((resp) => {
            let ionic: LatLng = new LatLng(resp.coords.latitude, resp.coords.longitude);
            const fileTransfer: FileTransferObject = this.transfer.create();
            let options: FileUploadOptions = {
              fileKey: 'File',
              fileName: data['0'].name,
              params: {
                postTitle: 'hey there',
                postDesc: 'jshfdjnsbdkjcfweigfc,ndsbfckjg',
                postLat : ionic.lat,
                postLng : ionic.lng,
                userId  : this.loggedInUserId  
              }
            }

            fileTransfer.upload(data['0'].fullPath, 'https://***************.com/images/postImages', options)
             .then((data) => {
               console.log('image has been uploaded');
             }, (err) => {
               // error
             })

          })
        })

首先我捕获图像然后是位置坐标,然后我将文件和数据发送到API enpoint。

router.post('/postImages', function(req, res) {
    pool.getConnection(function(err, connection) {
        console.log(req.body);
        var sql = "INSERT INTO posts (post_title, post_desc, post_lat, post_lng, user_id) VALUES (?, ?, ?, ?, ?)";
        var inserts = [req.body.postTitle, req.body.postDesc, req.body.postLat, req.body.postLng, req.body.userId];
        sql = mysql.format(sql, inserts);
        console.log(sql);
        connection.query(sql, function(error, results) {
            res.json(results);
            connection.release();
            if(error) throw error;
        });
    });
});

API命中已正确完成,但我没有收到req正文中的任何内容,目录中也没有文件。请帮助我,我处于最后一年项目提交的边缘。

0 个答案:

没有答案