如何解决上传文件到MinIO时出现TypeError: metaData should be of type "object"报错
问题原因
你调用MinIO Node.js SDK的fPutObject方法时传参不符合规范,该方法的第四个参数要求传入元数据对象,你直接传入了字符串类型的"application/octet-stream",因此触发类型校验错误。
方法参数说明
fPutObject标准传参顺序如下:
- 第1位:目标存储桶名称
- 第2位:文件上传到MinIO后的对象名称
- 第3位:待上传的本地文件路径
- 第4位(可选):元数据对象,文件的Content-Type、自定义头信息都需要写在这个对象里
- 第5位:操作完成后的回调函数
修正后的代码
var minioClient = new minio.Client({ endPoint: 'play.min.io', port: 9000, useSSL: true, accessKey: 'myaccesskey', secretKey: 'mysecretkey' }); app.post("/uploadfile", multer({dest: "./uploads/"}).single("files"), function(request, response) { // 把第四个参数改成元数据对象,Content-Type作为对象属性传入 minioClient.fPutObject("berliana", request.file.originalname, request.file.path, {'Content-Type': 'application/octet-stream'}, function(error, etag) { if(error) { return console.log(error); } response.send(request.file); }); });
如果你不需要指定任何元信息,也可以直接传空对象{}作为第四个参数。
内容的提问来源于stack exchange,提问作者berlianafd
相关产品推荐
相关产品推荐

