使用NodeJS在API调用中上传文件

我正在寻找使用NodeJS作为服务器来build立一个API。

理想情况下,我希望有一个API端点发送一组信息以及一个可以保存到文件系统的文件。

我见过的大多数例子都是通过表单发送文件,但是我想通过发布请求来完成。

有谁知道我能做到这一点(如果可能的话)?

目前我想达到的是如下几点:

app.post('/Some/Endpoint/', controller.handleSomeEndpoint, function(request, response) { response.send('Finished Request'); }); exports.handleSomeEndpoint = function(request, response, next) { var bodyarr = [] request.on('data', function(chunk){ bodyarr.push(chunk); }) request.on('end', function(){ console.log( bodyarr.join('') ); }) } 

但是,如果我沿着以下方向运行curl命令,数据和结束永远不会被调用:

 curl http://127.0.0.1:5000/Some/Endpoint/ -F 'test=@test_file' 

干杯,马特

答案似乎是expressJS不使用与nodejs中的http模块相同的方法来处理post文件。

所需要的只是包含要写入的文件的目录:

 app.use(express.bodyParser({uploadDir:'./uploads'})); 

我在这里find的是:

http://www.hacksparrow.com/handle-file-uploads-in-express-node-js.html

我build议你使用Formidable来避免匿名file upload。

你的代码应该工作正常。 这是curl用法是错误的。 试试这个:

 $ curl -X POST --data-binary @test_file http://localhost:8080