当前位置: 首页 > 面试题库 >

使用Multer-S3 Node.js将图像上传到Amazon S3

符渊
2023-03-14
问题内容

我正在尝试使用将图片上传到亚马逊s3 multer-s3,但出现此错误:

TypeError:预期opts.s3为对象node_modules / multer-s3 / index.js:69:20

这是我的服务器代码:

var upload = multer({
    storage: s3({
        dirname: '/',
        bucket: 'bucket',
        secretAccessKey: 'key',
        accessKeyId: 'key',
        region: 'us-west-2',
        filename: function (req, file, cb) {
            cb(null, file.originalname); 
        }
    })
});

app.post('/upload', upload.array('file'), function (req, res, next) {
    res.send("Uploaded!");
});

为什么我收到此错误?


问题答案:

完成 并正常工作的Node Cheat |
使用multer-s3上传到s3

码:

var express = require('express'),
    aws = require('aws-sdk'),
    bodyParser = require('body-parser'),
    multer = require('multer'),
    multerS3 = require('multer-s3');

aws.config.update({
    secretAccessKey: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
    accessKeyId: 'XXXXXXXXXXXXXXX',
    region: 'us-east-1'
});

var app = express(),
    s3 = new aws.S3();

app.use(bodyParser.json());

var upload = multer({
    storage: multerS3({
        s3: s3,
        bucket: 'bucket-name',
        key: function (req, file, cb) {
            console.log(file);
            cb(null, file.originalname); //use Date.now() for unique file keys
        }
    })
});

//open in browser to see upload form
app.get('/', function (req, res) {
    res.sendFile(__dirname + '/index.html');//index.html is inside node-cheat
});

//use by upload form
app.post('/upload', upload.array('upl',1), function (req, res, next) {
    res.send("Uploaded!");
});

app.listen(3000, function () {
    console.log('Example app listening on port 3000!');
});

对于完整的回购

克隆node-cheat express_multer_s3,node app然后运行npm install express body-parser aws-sdk multer multer-s3

快乐的帮助!



 类似资料:
  • 我试图使用multer在express服务器中上载图像,但是,使用postman上载图像时,使用下面的路由会给出json消息(即正确到达了路由),但是给出。为什么?相关的文件结构如下所示,以确保我正确引用了目的地: UploadRoutes.js

  • 我是NodeJS的新手,我正在使用express、ejs和Multer(处理多部分/表单数据)开发一个项目,以便上传一张图片(单个>>个人资料图片)。我一直试图在一个视图中显示上传的文件(图像),但没有成功。我有关于上传文件(req.file)的所有信息,但我不能用它做任何事情。 有人能帮帮我吗。 问候你,多娜

  • 使用的包 灵感来源于罗汉·保罗 2。将文件上传到AWS S3 bucket的函数 我收到的错误是HttpErrorResponse{headers:HttpHeaders,状态:500,状态文本:“内部服务器错误”,url::http://localhost:3000/v1/upload/files“,ok:false,…}错误:{statusCode:500,错误:“内部服务器错误”,消息:“p

  • 问题内容: 我正在上传base64字符串,但GraphQL挂起了。如果我将字符串切成少于50,000个字符,它将起作用。50,000个字符后,graphQL永远不会进入解析函数,但不会给出错误。在较小的字符串上,它可以正常工作。 问题答案: 此处的正确方法是使用AWS AppSync通过复杂类型执行实际的S3上传- 您在此处说明的内容看起来更像是您尝试将base64编码的图像作为字符串保存到字段中

  • API 当请求命中API时,文件计数为0。我花了整整两天的时间来找出哪里出了问题,但也无法找出问题。我不认为代码有问题,因为对其他一些人来说,它是工作的。我从不同的代码,所以接受答案。谁能帮我弄清楚出了什么问题吗?

  • 我正试图用Alamofire将图像上传到服务器,但我的代码不起作用。这是我的代码: 这是urlRequestWithComponents方法: 这就是我在控制台得到的: 请求{URL:http://tranthanhphongcntt.esy.es/task_manager/IOSFileUpload/ }响应可选({URL:http://tranthanhphongcntt.esy.es/tas