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,"图片上传出错");
}
}
post方式发送接收文件的更多相关文章
- 应用SecureCRT(发送接收文件)
使用 SecureCRT 和 cz. sz,可以从 Linux 服务器上下载/上传文件. Linux 上要安装 lszrz 包 (1)编译安装root 账号登陆后,依次执行以下命令 cd /tmp w ...
- STM32 串口USART DMA方式发送接收数据
硬件:stm32f103cbt6 软件:STM32F10x_StdPeriph_Lib_V3.5.0 文章目录 头文件 USART3_DR的地址 DMA的通道 DMA的中断 USART接收回调函数 头 ...
- Java以邮件附件的方式发送excel文件
String to = "xxx@qq.com"; // 收件人的QQ邮箱 String from = "xxx@qq.com"; // 发件人的QQ邮箱 St ...
- Qt5 基于TCP传输的发送/接收文件服务器(支持多客户端)
一.实现功能 1.服务器端选择待发送的文件,可以是多个 2.开启服务器,支持多客户端接入,能够实时显示每个客户端接入状态 3.等待所有客户端都处于已连接状态时,依次发送文件集给每个客户端,显示每个客户 ...
- python通过get方式,post方式发送http请求和接收http响应-urllib urllib2
python通过get方式,post方式发送http请求和接收http响应-- import urllib模块,urllib2模块, httplib模块 http://blog.163.com/xyc ...
- java 模拟http请求,通过流(stream)的方式,发送json数据和文件
发送端: /** * 以流的方式 * 发送文件和json对象 * * @return */ public static String doPostFileStreamAndJsonObj(String ...
- python通过get,post方式发送http请求和接收http响应的方法,pythonget
python通过get,post方式发送http请求和接收http响应的方法,pythonget 本文实例讲述了python通过get,post方式发送http请求和接收http响应的方法.分享给大家 ...
- 需求:过滤下面这个网页里共723行 校对中里 行数为两位数的 行 并设置sz和rz在Windows和Linux之间发送和接收文件不用搭FTP
需求:过滤下面这个网页里共723行 校对中里 行数为两位数的 行 并设置sz和rz在Windows和Linux之间发送和接收文件不用搭FTP 需求:过滤下面这个网页里共723行 校对中里 行数为两位数 ...
- 使用MSCOMM发送任意文件,还有一些注意事项
第一步:发送文件 FILE* pSENDFILE = _wfopen(m_edit_chosefile, _T("rb"));//以二进制打开待发送文件的的文件指针 fseek(p ...
随机推荐
- Eclipse中mvn install 报错error in opening zip file
报错信息 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (de ...
- Android理解:Activity状态和生命周期
http://blog.csdn.net/xiao__gui/article/details/11464603
- 《锋利的jQuery 第二版》chapter 1~
chapter 1 认识 jQuery jquery.js(开发版),jquery.min.js(生产版) window.onload 与 $(document).ready() 的对比: jquer ...
- 实验1 C语言运行环境的使用和数据类型、运算符和表达式
Part1 这一部分的内容虽然简单,但是对于初学的我来说,独自完成且没有错误还是不容易的,像老师说的一样,只有自己亲手编写以后才可以发现问题并且逐步改正.从这次实践我对与C语言程序的结构更加熟悉. ...
- 各大SRC中的CSRF技巧
本文作者:i春秋签约作家——Max. 一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/ses ...
- easyui页面上显示和PL/SQL编码问题
在页面上,只需要显示人们看的懂的文字就行,但是在数据库里面就不一定了,一般情况下,在数据库里面存字母,数字等除了汉字以外的字符,存汉字有个问题,就是有时候不同oracle数据库的客户端会出现乱码问题: ...
- Kettle 值映射
在费用转换里面做了两个值映射.一个是编码.一个是名称.其中两个值映射设置不一样效果不一样. 第一个编码映射 目标字段名不为空,则表示会新增字段.其中复核源值条件的都会转换为目标值,不符合条件的会用[不 ...
- fetch网络请求 get 和 post
//在React Native中,使用fetch实现网络请求 /* fetch 是一个封装程度更高的网络API, 使用了Promise* Promise 是异步编程的一种解决方案* Promise 对 ...
- 2018-2019-2 网络对抗技术 20165314 Exp6 信息搜集与漏洞扫描
一.原理与实践说明 1.实践内容 本实践的目标是掌握信息搜集的最基础技能.具体有: 1.各种搜索技巧的应用 2.DNS IP注册信息的查询 3.基本的扫描技术:主机发现.端口扫描.OS及服务版本探测. ...
- Numpy中扁平化函数ravel()和flatten()的区别
在Numpy中经常使用到的操作由扁平化操作,Numpy提供了两个函数进行此操作,他们的功能相同,但在内存上有很大的不同. 先来看这两个函数的使用: from numpy import * a = ar ...