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

时间:2013-03-01 06:56:15

标签: node.js express

一些背景知识:我正在尝试使用node.js创建一个Web服务,并表示接受带有附加图像的POST请求。

我已成功发送请求,但我希望能够对图像执行某些操作。我见过的所有这些例子都使用表格来使用POST上传文件,这样做,允许他们为他们要上传的文件命名。允许他们执行以下操作

app.post('/upload',function(req,res) {
    req.files.formName // have access to the file's information
}

我只是希望能够以类似REST的方式创建POST请求,因此文件通过API调用上传,因此当文件到达服务器时,express会给它一个随机名称以及访问文件数组中的文件是使用实际的图片文件名,这取决于用户的文件名是什么,我不能使它保持不变。

app.post('/upload',function(req,res) {
    req.files.<what goes here>
    req.files[0] // this wont work
}

我的帮助很受赞赏,如果我这样做的方式不对,说使用快递是不错的选择,那么请继续并建议。我正在做这个项目来学习如何使用node.js以及它的所有优点。

3 个答案:

答案 0 :(得分:1)

它的工作方式仍然相同。

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

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

var data = {"image":imageData};

要访问它仍然是

req.files.image

答案 1 :(得分:0)

如果要访问原始HTTP正文:

app.post('/upload', function(req, res) {
  var chunks = '';
  req.on('data', function(data) {
    chunks += data;
  });
  req.on('end', function() {
    console.log('received', chunks.length, 'bytes', chunks);
    res.send(...);
  });
});

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

答案 2 :(得分:0)

简单上传你只需要这些配置:

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')