使用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