繁体   English   中英

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

[英]Node.js server using Express.js uploaded file name

一些背景:我正在尝试使用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
}

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

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

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

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

var data = {"image":imageData};

要访问它仍然是

req.files.image

如果要访问原始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()

对于简单上传,您只需要这些配置:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM