Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Nodejs POST request multipart/form-data

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?

like image 233
giodamelio Avatar asked Dec 10 '12 08:12

giodamelio


1 Answers

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);     }); }); 
like image 181
giodamelio Avatar answered Sep 30 '22 06:09

giodamelio