使用Express.js上载文件名的Node.js服务器

使用Express.js上载文件名的Node.js服务器,node.js,express,Node.js,Express,一些背景:我正在尝试使用node.js和express创建一个web服务,该服务接受带有图像的POST请求 我已经能够成功地发送请求,但我希望能够对图像进行处理。我看到的所有例子都使用一个表单使用POST上传一个文件,这样做可以让他们为要上传的文件命名。允许他们执行以下操作 app.post('/upload',function(req,res) { req.files.formName // have access to the file's information } 我只是希望能

一些背景:我正在尝试使用node.js和express创建一个web服务,该服务接受带有图像的POST请求

我已经能够成功地发送请求,但我希望能够对图像进行处理。我看到的所有例子都使用一个表单使用POST上传一个文件,这样做可以让他们为要上传的文件命名。允许他们执行以下操作

app.post('/upload',function(req,res) {
    req.files.formName // have access to the file's information
}
我只是希望能够以REST的方式创建POST请求,这样文件就可以通过API调用上传,所以当文件到达服务器时,express会给它一个随机名称,在文件数组中访问文件的方法是使用实际的pictures文件名,这取决于用户的文件名,我不能将其设置为常量

app.post('/upload',function(req,res) {
    req.files.<what goes here>
    req.files[0] // this wont work
}
app.post('/upload',函数(req,res){
请求文件。
req.files[0]//这不起作用
}

非常感谢您的帮助,如果我用了错误的方法,比如说使用express是一个错误的选择,那么请继续并提出建议。我做这个项目是为了学习如何使用node.js及其所有优点。

它仍然以同样的方式工作

即使您以类似REST的方式发送POST,您仍然必须在api调用中命名参数

例如,如果您将图片命名为“图像”

var data = {"image":imageData};
访问它仍然是一个问题

req.files.image

如果要访问原始HTTP正文,请执行以下操作:


(如果您还需要使用
express.bodyParser
,请确保在设置上述路径后使用
app.use()

对于简单的上传,您只需要以下配置:

app.use(express.static(__dirname + '/upload'));
app.use(express.bodyParser({uploadDir:__dirname + '/upload'}));
在翡翠模板中:

form(method='post', action='/upload', enctype='multipart/form-data')
    input(name='file', type='file')
    input(type='submit')

我使用的是Webstorms REST客户端,所以我猜它总是选择表单名作为文件名。谢谢你的提醒。
form(method='post', action='/upload', enctype='multipart/form-data')
    input(name='file', type='file')
    input(type='submit')