我正在尝试通过带有POST请求的照片上传 request module
request module
根据自述文件,我应该能够做到这一点
var r = request.post("http://posttestserver.com/post.php", requestCallback) var form = r.form() form.append("folder_id", "0"); form.append("filename", fs.createReadStream(path.join(__dirname, "image.png"))); function requestCallback(err, res, body) { console.log(body); }
问题是,这不起作用。我收到测试服务器的回复,说它转储了0个post变量。
我已经确认该HTML小页面服务器处于工作状态
<html> <body> <form action="http://posttestserver.com/post.php?dir=example" method="post" enctype="multipart/form-data"> File: <input type="file" name="submitted"> <input type="hidden" name="someParam" value="someValue"/> <input type="submit" value="send"> </form> </body> </html>
所以问题是,请求模块在做什么?有没有更好的方法来发送multipart/form-data节点?
multipart/form-data
经过更多研究后,我决定使用restler module。这使得分段上传非常容易。
restler module
fs.stat("image.jpg", function(err, stats) { restler.post("http://posttestserver.com/post.php", { multipart: true, data: { "folder_id": "0", "filename": restler.file("image.jpg", null, stats.size, null, "image/jpg") } }).on("complete", function(data) { console.log(data); }); });