Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8902

IBM Cloud ObjectStorageにファイルをアップロードする

$
0
0

やりたいこと

前提条件

  • Node.js...10.16.0
  • multer...1.4.2
  • multer-s3...2.9.0
  • ibm-cos-sdk...1.5.4
  • IBM Cloud Object Storage・Bucket作成ずみ

パッケージのインストール

npm install --save multer multer-s3 ibm-cos-sdk

upload.controller.js

constmulter=require('multer');constconfig=require('config');constaws=require('ibm-cos-sdk');constmulterS3=require('multer-s3');constep=newaws.Endpoint(config.objectStorage.endpoints);consts3=newaws.S3({endpoint:ep,region:'us-south',apiKeyId:config.objectStorage.apikey});constbucket=config.objectStorage.iam_apikey_name;constupload=multer({storage:multerS3({s3:s3,bucket:bucket,acl:'public-read',key:function(req,file,cb){cb(null,`${newDate().getTime()}_${file.originalname}`);}})});exports.upload=upload;

config/development.json

"objectStorage":{"apikey":"自分のAPI KEY","endpoints":"https://s3.{自分のregionのprefix}.cloud-object-storage.appdomain.cloud","iam_apikey_name":"自分のバケットの名前"}

uploader.controller.js

constuploadImage=async(req,res,next)=>{// ファイルのURLはfiles[index].locationに保存されるconstimagePathList=req.files.map((file)=>file.location);constlist=JSON.parse(req.body.list);constresult=awaitdb.update();// あとはDBの更新なり行ってください。res.json(result);};exports.uploadImage=uploadImage;

uploader.route.js

constexpress=require('express');const{upload}=require('./upload.controller');const{uploadImage}=require('./uploader.controller');/* eslint new-cap: 0 */constrouter=express.Router();router.route('/upload')// upload.array('photos', 10)で10枚まで同時アップロード可能.post(upload.array('photos',10),updateCarStatusWithImage)

テストコード(mocha+chai+supter test)

it('should upload multi image file',async()=>{constresult=awaitrequest(app).post(`/upload`).attach('photos',path.join(__dirname,'images','image1.jpg')).attach('photos',path.join(__dirname,'images','image2.jpg')).attach('photos',path.join(__dirname,'images','image3.jpg')).attach('photos',path.join(__dirname,'images','image4.jpg'))// req.body.listとして送信したい情報がある場合.field('list',JSON.stringify(['one','two','three'])).expect(200);should.exist(result.body);});

Viewing all articles
Browse latest Browse all 8902

Trending Articles