nodejs socket客户端 http上传
今天要做个http上传的东东,以为是iphone段上传,虽然http上传我也大概了解,但是没有实质做过,给ios沟通以后告诉他上传协议以后,他怎么测试都不通过,郁闷,应该是我理解有误,然后就自己用nodejs写了一个,终于明白那里错了.还是对协议理解的不是很彻底,分隔字符串的前边也要加"--",这个之前没注意到...
这次主要是吧自己的代码分享给大家,让大家少走弯路.
nodejs socket客户端 http上传 upload.js
var net = require('net');
var client = net.connect(80, '20.t.yeamo.com', function() {
console.log('client connected');
var bodys = [];
bodys.push('--998998');
bodys.push('Content-Disposition: form-data; name="file"; filename="tt.txt"');
bodys.push('Content-Type: text/plain');
bodys.push('');
bodys.push('ceshi xinxi, 还有中文!');
bodys.push('--998998--\r\n');
var body = bodys.join('\r\n');
var heads = [];
heads.push('POST /iphone_upload/upload.php HTTP/1.1');
heads.push('Host: localhost');
heads.push('Content-Type: multipart/form-data; boundary=998998');
heads.push('Content-Length: '+Buffer.byteLength(body));
var head = heads.join('\r\n');
var request = head+'\r\n\r\n'+body;
console.log(request+'\r\n');
client.write(request);
});
client.on('data', function(data) {
console.log(data.toString());
client.end();
});
client.on('end', function() {
console.log('client disconnected');
});
php 接收上传文件 upload.php
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
file_put_contents('log.txt', var_export($_SERVER, true)."\r\n\r\n", FILE_APPEND);
file_put_contents('log.txt', var_export($_FILES, true)."\r\n\r\n", FILE_APPEND);
$file = date('YmdHis').'.jpg';
if (move_uploaded_file($_FILES['file']['tmp_name'], $file)) {
echo "upload ok! \r\n http://localhost/iphone_upload/$file";
} else {
echo "upload err!";
}
exit();
}
?>
<form enctype="multipart/form-data" action="upload.php" method="POST">
Send this file: <input name="file" type="file" />
<input type="submit" value="Send File" />
</form>