nodejs模拟http-post文件的方法示例
var fs = require("fs");
var http = require('http');
function PostFileToServer(sFileName, data, callback) {
var boundary = "NODEJSPOSTFILE-" + (Math.random() * 9007199254740992).toString(36);
var sHeader = "--" + boundary + "\r\n";
sHeader += "Content-Disposition: form-data; name=\"fileName\"; filename=\"" + sFileName + "\"\r\n";
sHeader += "Content-Type: application/octet-stream\r\n\r\n";
var sEndData = "\r\n--" + boundary + "--\r\n\r\n";
var options = {
hostname: "127.0.0.1",
port : 3031,
path : "/cgi-bin/upload?action=uploadFile&newname=my.jpg",
method : 'POST'
};
var httpreq = http.request(options, function (httpres) {
httpres.on('data', function (dataResponse) {
var response = JSON.parse(dataResponse);
console.log(response.md5);
console.log(response.name);
});
});
httpreq.setHeader('Content-Type', 'multipart/form-data; boundary=' + boundary + '');
httpreq.setHeader('Content-Length', Buffer.byteLength(sHeader) + data.length + Buffer.byteLength(sEndData));
httpreq.on('error', function(e) {
console.log('problem with request: ' + e.message);
callback(e);
return;
});
httpreq.write(sHeader);
httpreq.write(data);
httpreq.write(sEndData);
httpreq.end();
}
fs.readFile('1.jpg', function (err, data) {
if (err) throw err;
console.log(data.length);
PostFileToServer("1.jpg", data, function(){
console.log("call back");
});
});
{
fileName:
{
domain: null,
_events: {},
_maxListeners: undefined,
size: 595284,
path: 'tmp\\upload_ba227eaf1015fda43ea4a218b2161748',
name: '1.jpg',
type: 'application/octet-stream',
hash: null,
lastModifiedDate: Sun Mar 08 2015 14:34:18 GMT+0800 (中国标准时间),
_writeStream:
{
_writableState: [Object],
writable: true,
domain: null,
_events: {},
_maxListeners: undefined,
path: 'tmp\\upload_ba227eaf1015fda43ea4a218b2161748',
fd: null,
flags: 'w',
mode: 438,
start: undefined,
pos: undefined,
bytesWritten: 595284,
closed: true
}
}
}
nodejs模拟http-post文件的方法示例的更多相关文章
- Netty学习笔记(一):接收nodejs模拟表单上传的文件
好久不写博客了,也好久不写代码了,这两天临时遇上一个事情,觉得不难,加上觉得手有些生,就动手做了一下,结果遇上了不少坑,有新坑,有老坑,痛苦无比,现在总算差不多了,赶紧记录下来,希望以后不再重复这种痛 ...
- PHP cURL应用实现模拟登录与采集使用方法详解
对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_co ...
- PHP cURL实现模拟登录与采集使用方法详解教程
来源:http://www.zjmainstay.cn/php-curl 本文将通过案例,整合浏览器工具与PHP程序,教你如何让数据 唾手可得 . 对于做过数据采集的人来说,cURL一定不会陌生.虽然 ...
- 调试SQLSERVER (一)生成dump文件的方法
调试SQLSERVER (一)生成dump文件的方法 调试SQLSERVER (二)使用Windbg调试SQLSERVER的环境设置调试SQLSERVER (三)使用Windbg调试SQLSERVER ...
- 两种动态加载JavaScript文件的方法
两种动态加载JavaScript文件的方法 第一种便是利用ajax方式,第二种是,动静创建一个script标签,配置其src属性,经过把script标签拔出到页面head来加载js,感乐趣的网友可以看 ...
- Apache日志不记录图片文件设置方法和来源日志的配置
Apache日志不记录图片文件设置方法 <FilesMatch "\.(ico|gif|jpg|swf)">SetEnv IMAG 1</FilesMatch&g ...
- asp.net读取excel文件多种方法
asp.net读取excel文件的三种方法示例,包括采用OleDB读取Excel文件.引用的com组件读取Excel文件.用文件流读取. 方法一:采用OleDB读取Excel文件 把Excel文件 ...
- asp.net 文件上传示例整理
ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法. 方法一:用Web控件FileUpload,上传到网站根目录. 代码如下 复制代码 ...
- java中读取资源文件的方法
展开全部 1.使用java.util.Properties类的load()方法 示例: //文件在项目下.不是在包下!! InputStream in = new BufferedInputStrea ...
随机推荐
- 华为上机:求2的N次幂的值
求2的N次幂的值 描述: 求2的N次幂的值(N最大不超过31,用位运算计算,结果以十六进制进行显示). 运行时间限制: 无限制 内存限制: 无限制 输入: 数字N 输出: 2的N次方(16进制,需要按 ...
- lintcode:快乐数
快乐数 写一个算法来判断一个数是不是"快乐数". 一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是 ...
- Android 基于Socket的聊天应用(二)
很久没写BLOG了,之前在写Android聊天室的时候答应过要写一个客户(好友)之间的聊天demo,Android 基于Socket的聊天室已经实现了通过Socket广播形式的通信功能. 以下是我写的 ...
- WPF之通过EventTrigger修改模板中元素的属性
前言:对于此操作,我只想说是微软的神经,还是我的笨蛋.为什么EventTrigger就不能像Trigger那样直接设置Property以及Value就对属性进行操作,而必须要放一个Action,而默认 ...
- UML系列03之UML时序图
时序图介绍 时序图(Sequence Diagram),亦称为序列图或循序图,是一种UML行为图.时序图是用来描述系统内部是如何交互运作的,它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协 ...
- WebBrowser控件应用:弹出新窗体和关闭窗口
缘起:上次写了一个<WebBrowser控件的简单应用2>,提到了在NewWindow事件中打开新窗口的例子.有网友“队长 ”提出那个事件得到的参数是本页面的,而不是新页面的,经过测试,果 ...
- marquee 笔记
页面的自动滚动效果,可由javascript来实现, 但是有一个html标签 - <marquee></marquee>可以实现多种滚动效果,无需js控制. 使用marquee ...
- Hadoop2.2.0 安装笔记
在Youtube上找到靠谱的教程:http://www.youtube.com/watch?v=WN2tJk_oL6E 同时把作者的教程下载下来放在百度云盘上了:http://pan.baidu.co ...
- dataguru试听课程
http://www.dataguru.cn/article-5447-1.html#userconsent#
- [HZNUOJ1524]排队买票(DP)
题目链接:http://acm.hznu.edu.cn/JudgeOnline/problem.php?id=1524 简单分析后可以知道每一个手持两元的小朋友前面,售票员手里至少有一个一元. 假设d ...