3

一些背景知识:我正在尝试使用 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 给它一个随机名称和访问文件的方式files 数组是使用实际的图片文件名,这取决于用户的文件名是什么,我不能让它保持不变。

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

感谢您的帮助,如果我做错了,说使用 express 是一个不好的选择,那么请继续提出建议。我正在做这个项目来学习如何使用 node.js 和所有它的好处。

4

3 回答 3

1

它仍然以相同的方式工作。

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

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

var data = {"image":imageData};

访问它仍然是

req.files.image
于 2013-03-01T07:06:46.787 回答
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()

于 2013-03-01T07:12:52.953 回答
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')
于 2013-04-30T12:18:47.353 回答