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 ...
随机推荐
- 【Selenium专题】 FAQ_对象识别_Compound class names are not supported
测试代码 public void login(){ WebDriver driver = new ChromeDriver(); driver.get("http://IP:Port/cli ...
- POJ - 2421 Constructing Roads (最小生成树)
There are N villages, which are numbered from 1 to N, and you should build some roads such that ever ...
- JS延时器 定时器 暂停器 中断器
// numberMillis 毫秒 function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() ...
- JMeter—系统性能分析思路
系统在工作负载中的性能受到许多因素影响,处理器速度.内存容量.网络或磁盘I/O控制器的数量以及磁盘的容量和速度是所以工作负荷的重要性能特征组件.还有其他应用程序自身的性能特征.工作负荷的特性.应用程序 ...
- SecureCRT上传下载文件
这篇内容在哪看到的我也找不到了,不过就是做个记录. 步骤如下: 1.SecureCRT连接远程终端. 2.在连接窗口上方右击,弹出菜单后点击Connect SFTP Session, 3.点击后弹出窗 ...
- appium+android各配置参数获取'platformName'、'platformVersion'、appActivity、deviceName、webdriver.Remote
图中1的获取--'platformName'.'platformVersion' 点击appium右上角的运行按钮,可通过上面查看platformName 和 platformVersion 平台版本 ...
- python学习,day3:函数式编程,带return
return的主要作用就是,在调用的时候,能知道函数的运行情况,相当于打个标签 # coding=utf-8 # Author: RyAn Bi def test1(): print('in the ...
- Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名
Oracle数据库,用mybatic批量插入数据: <insert id="saveBatch" parameterType="io.renren.entity.N ...
- java8特性之Lambda表达式
1.典型的用Lambda表达式的场景 如果有这样的一个小应用,其中的一个类Student包含姓名(name),性别(sex),分数(score),如下: package demo; public cl ...
- Luogu P1886 滑动窗口
P1886 滑动窗口 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. 例如: The a ...