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 条评论
登录 后参与评论

相关文章

来自专栏zhisheng

渣渣菜鸡的 ElasticSearch 源码解析 —— 环境搭建

去 https://www.elastic.co/downloads/past-releases 这里找到 ElasticSearch 6.3.2 版本,下载后...

1122
来自专栏Android 开发学习

IntelliJ IDEA spring mvc +mybatis 环境搭建服务器(上)

1893
来自专栏JavaEE

微信Java开发工具包的使用前言:一、weixin-java-tools介绍:二、使用方法:总结:

之前我在《Java调用微信登录以及eclipse远程调试》一文中说到了Java程序怎么调用微信登录,不过那篇文章中使用的是手工方式,本文将介绍如何使用第三方SD...

622
来自专栏JavaEE

ElasticSearch的安装以及与springboot的集成

elasticseach简称es,现在用得非常广泛,像百度等一些知名互联网公司都有用到es。那么es到底是什么呢?如何使用呢?下面就一起来学习一下。

2762
来自专栏个人分享

RestTemplate

RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的...

722
来自专栏IT笔记

微信支付linux下java.net.UnknownHostException: api.mch.weixin.qq.com

这个错误是因为服务器无法识别api.weixin.qq.com这个域名 解决方法: 1、查看你的服务器能否ping通外网,不过不行说明你的网络出了问题 2、在确...

5655
来自专栏程序之美

第十三节 资源服务和认证服务通信,校验token

1) 设置RestTemplate,默认RestTemplate有些格式无法解析,配置相关解析器

862
来自专栏ImportSource

自己动手用Socket写一个HttpClient发送GET请求

你也许经常使用到HttpClient,但你试过使用Socket来自己模拟一个HTTP请求吗? 其实很简单,只要使用Socket向指定的Http Server端发...

29010
来自专栏JackieZheng

探秘Tomcat——从一个简陋的Web服务器开始

前言:   无论是之前所在实习单位小到一个三五个人做的项目,还是如今一个在做的百人以上的产品,一直都能看到tomcat的身影。工作中经常遇到的操作就是启动和关闭...

1977
来自专栏菩提树下的杨过

jdk 10.0.2 bug修复

之前记录过jdk9+版本的1个bug,某些情况下会导致方法执行二遍,今天早上打开笔记本(mac),弹出一个框提示jdk升级10.0.2,顺手点了一下,然后验证了...

742

扫码关注云+社区