如何直接 URL 到通过 Node.js 上传的多部分文件
How to get direct URL to multipart file uploaded via Node.js
我希望 post 文件以多部分形式上传到 Amazon S3 Bucket 并 return 给用户 link 文件。
const express = require('express'),
aws = require('aws-sdk'),
bodyParser = require('body-parser'),
multer = require('multer'),
multerS3 = require('multer-s3');
aws.config.update({
secretAccessKey: 'secret',
accessKeyId: 'secret',
region: 'us-east-2'
});
const app = express(),
s3 = new aws.S3();
app.use(bodyParser.json());
const upload = multer({
storage: multerS3({
s3: s3,
bucket: 'some-name',
key: (req, file, cb) => {
console.log(file);
cb(null, file.originalname); //use Date.now() for unique file keys
}
})
});
app.post('/upload', upload.array('file',1), (req, res, next) => {
res.send("How to return File URL?");
});
app.listen(3000);
我怎样才能直接 URL 到文件?
您可以从文件的 属性 位置获取它。
res.send(req.file.location);
(Multer NPM) 已经写在文档中:
.single(fieldname) => (req.file)
接受一个名为 fieldname 的文件。单个文件将存储在req.file.
app.post('/upload', upload.single('file'), (req, res, next) => {
console.log('Uploaded!');
res.send(req.file);
});
.array(fieldname[ maxCount]) => (req.files)
接受一个文件数组,所有文件的名称都是fieldname。如果上传的文件超过 maxCount 个,可选择出错。文件数组将存储在 req.files.
app.post('/upload', upload.array('file', 1), (req, res, next) => {
console.log('Uploaded!');
res.send(req.files);
});
.fields(字段) => (req.files)
接受由字段指定的混合文件。具有文件数组的对象将存储在 req.files
app.post('/upload', upload.fields([
{ name: 'avatar', maxCount: 1 },
{ name: 'gallery', maxCount: 8 }
]), (req, res, next) => {
console.log('Uploaded!');
res.send(req.files);
});
.any() => (req.files)
接受通过网络传输的所有文件。文件数组将存储在 req.files.
.none()
仅接受文本字段。如果进行任何文件上传,将发出错误代码“LIMIT_UNEXPECTED_FILE”。
只需使用
req.file.location
在成功响应中
我希望 post 文件以多部分形式上传到 Amazon S3 Bucket 并 return 给用户 link 文件。
const express = require('express'),
aws = require('aws-sdk'),
bodyParser = require('body-parser'),
multer = require('multer'),
multerS3 = require('multer-s3');
aws.config.update({
secretAccessKey: 'secret',
accessKeyId: 'secret',
region: 'us-east-2'
});
const app = express(),
s3 = new aws.S3();
app.use(bodyParser.json());
const upload = multer({
storage: multerS3({
s3: s3,
bucket: 'some-name',
key: (req, file, cb) => {
console.log(file);
cb(null, file.originalname); //use Date.now() for unique file keys
}
})
});
app.post('/upload', upload.array('file',1), (req, res, next) => {
res.send("How to return File URL?");
});
app.listen(3000);
我怎样才能直接 URL 到文件?
您可以从文件的 属性 位置获取它。
res.send(req.file.location);
(Multer NPM) 已经写在文档中:
.single(fieldname) => (req.file)
接受一个名为 fieldname 的文件。单个文件将存储在req.file.
app.post('/upload', upload.single('file'), (req, res, next) => {
console.log('Uploaded!');
res.send(req.file);
});
.array(fieldname[ maxCount]) => (req.files)
接受一个文件数组,所有文件的名称都是fieldname。如果上传的文件超过 maxCount 个,可选择出错。文件数组将存储在 req.files.
app.post('/upload', upload.array('file', 1), (req, res, next) => {
console.log('Uploaded!');
res.send(req.files);
});
.fields(字段) => (req.files)
接受由字段指定的混合文件。具有文件数组的对象将存储在 req.files
app.post('/upload', upload.fields([
{ name: 'avatar', maxCount: 1 },
{ name: 'gallery', maxCount: 8 }
]), (req, res, next) => {
console.log('Uploaded!');
res.send(req.files);
});
.any() => (req.files)
接受通过网络传输的所有文件。文件数组将存储在 req.files.
.none()
仅接受文本字段。如果进行任何文件上传,将发出错误代码“LIMIT_UNEXPECTED_FILE”。
只需使用
req.file.location
在成功响应中