I am trying to upload a photo via a POST request with the request module
According to the readme I should just be able to do this
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); }
The problem is, this doesn't work. I get a reply from the test server saying it dumped 0 post variables.
I have confirmed that the server is in working condition with this little html page
<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>
So the question is, what am I doing wrong with the request module? Is there a better way to send multipart/form-data
with node?
After some more research, I decided to use the restler module
. It makes the multipart upload really easy.
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); }); });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With