post方式发送接收文件

//文件post发送
var express = require('express');
var router = express.Router();
var request = require("request");
var fs = require("fs");
fs.readFile("public/img/test.jpg", function (err, data) {
     if (err) {
         res.send({"errMsg":"'图片上传失败'"});
         return;
     }
     var base64str = new Buffer(data).toString('base64'); //图片转字节
     var mkJSON = {
         path: "public/upload",
         img: base64str,
         encoding: 'utf8'
     };
     request({
         url: "127.0.0.1:3000/img",
         method: "post",
         form: {
             mark: "IMG",
             content: JSON.stringify(mkJSON)
         }
     }, function (error, response, body) {
         if (!error && body != undefined && response.statusCode == 200 && body.indexOf("失败") < 0) {
             //fs.unlink(localPath);
                 res.send({
                     success: true
                 });
           } else {
                 console.log("err:" + body);
                     res.send({"errMsg": "图片post失败", success: false});
            }
       });
});
//post的文件进行接收
router.post("/img", function (req, res) {
    var content = req.param('content');
    if (null != content) {
        var temp = JSON.parse(content);
        var mkJSON = temp[0];
        var filePath = mkJSON.path.replace(/\B\//, '');
        filePath = filePath.substr(0, filePath.lastIndexOf("/"));if (!err) { //目录创建成功
            fs.writeFileSync(mkJSON.path.replace(/\B\//, ''), new Buffer(mkJSON.img.replace(/ /g, '+'), 'base64'));
            //res.json({"newImgPath": constClass.ip + "/image/" + mkJSON.path.replace(/\B\//, '')});
            res.send('图片接收成功!');
        } else { //目录创建失败
            res.send('图片接收失败');
        }
    } else {
        res.send('图片接收失败');
    }
});

 thinkjs版:

async uploadAction() {
        let imgData = this.post("image");
        let base64Data = imgData.replace(/^data:image\/\w+;base64,/, "");
        let dataBuffer = new Buffer(base64Data, 'base64');
        let imgpath = imgutil.getImageUrl("jpg");
        let base64str = new Buffer(dataBuffer).toString('base64'); //图片转字节
        console.log(imgpath);
        let mkJSON = {
            path: imgpath,
            img: base64str,
            encoding: 'utf8'
        };
        let req = think.promisify(request.post);
        let reqObj = {
            url: think.config("makesite"),
            method: "post",
            form: {
                mark: "IMG",
                content: JSON.stringify(mkJSON)
            }
        };
        let rs = await req(reqObj);
        if(rs != undefined && rs.statusCode == 200 && rs.body.indexOf("失败") < 0){
            return this.success(think.config("imgsite")+imgpath);
        }else{
            return this.fail(1,"图片上传出错");
        }
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏电光石火

基于Tcp协议的简单Socket通信实例(JAVA)

基于TCP协议Socket服务端和客户端的通信模型: Socket通信步骤:(简单分为4步) 1.建立服务端ServerSocket和客户端Sock...

2266
来自专栏青青天空树

javaservlet处理四种常用api请求get,put,post,delete

  一般在网站搭建中servlet只需处理post,get请求便足已。本篇注重使用javaweb编写restful风格api,在servlet中对四种常用请求进...

852
来自专栏技术记录

HttpURLConnection实现两个服务端的对接

在企业开发中,很多时候需要用到两个服务端的对接,在java类中进行连接并传递参数,其中的HttpURLConnection是一种轻量化,并且简单的方法! ...

1746
来自专栏Phoenix的Android之旅

Android进阶资深开发必备技能-切面编程

切面编程听起来可能有点陌生,不过现在越来越多的开发团队正在用上这种技术。 先说熟悉的面向对象编程 OOP,通常都是用各种对象/模块来负责具体的功能,互相之间尽量...

684
来自专栏编程微刊

动态表格之查看、删除、编辑

1742
来自专栏电光石火

Java实现Http的Post、Get、代理访问请求

Java实现Http的访问请求。包含基本的Get访问、Post访问。Post包含使用代理模式访问

1857
来自专栏电光石火

Java实现Http的Post、Get、代理访问请求

Java实现Http的访问请求。包含基本的Get访问、Post访问。Post包含使用代理模式访问 package com.nit.utils; imp...

1877
来自专栏禁心尽力

总结切面编程AOP的注解式开发和XML式开发

       有段日子没有总结东西了,因为最近确实有点忙,一直在忙于hadoop集群的搭建,磕磕碰碰现在勉强算是能呼吸了,因为这都是在自己的PC上,资源确实有点...

22510
来自专栏编码前线

Android APK脱壳--腾讯乐固、360加固一键脱壳

启动 VirtualXposed,并在 VirtualXposed中安装 FDex2:

793
来自专栏不想当开发的产品不是好测试

Rest-assured 写日志到 log4j

背景: 采用Rest-assured,日志采用log4j,发现Rest-assured本身只支持打印日志到控制台,但期望打印到文件中以便排查问题 请求打印的语句...

1958

扫码关注云+社区