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

【JS/GCS】ファイルアップロードオプション

$
0
0

内容

GCSに画像やら動画やらをアップロードする実装についてメモしておきます。

fs.createReadStream

下記のドキュメントで実装されています。
Cloud Storage の使用  |  Node.js ドキュメントに対応した App Engine フレキシブル環境

上記で実装している blob.createWriteStreamメソッドの中身を見てみると以下のようなサンプル実装もあり、参考になります。

import*asfsfrom'fs'fs.createReadStream('panda.jpg').pipe(file.createWriteStream({metadata:{contentType:'image/jpeg',metadata:{custom:'metadata'}}})).on('error',function(err){}).on('finish',function(){// The file upload is complete.});

ファイル作成

また createWriteStreamを使って、バイナリからファイルを作成することも可能です。

conststream=fs.createWriteStream(filename);// 'image.png' とか 'video.mp4' とかstream.write(binary)// バイナリデータをファイルに書き出す

bucket.upload

下記の場合だとサーバー上に画像が吐き出される形になります。

constbucket=this.gcs.bucket('staging');bucket.upload(filename,{// GCSのフォルダ構成を指定// filenameは、'image.png' とか 'video.mp4' とかdestination:`test/${filename}`,gzip:true,metadata:{cacheControl:'no-cache',},}).catch((err)=>{console.error(`Failed to Upload`)});

Google Cloud Storageにファイルを保存する - iyuichiの私的開発ログ

file.save

バイナリをそのままアップロードする方法です。
saveメソッドの引数がバイナリでも受け取ることができるので(any型)、ファイルをサーバー上に作成せずともGCSにアップロードすることが可能です。

constbucket=this.gcs.bucket('staging');// バケットの指定constblob=bucket.file(`test/${filename}`);// ここでフォルダ構成 + ファイル名を指定できるreturnblob.save(binary)// バイナリデータを指定.then(()=>{returnfile.getSignedUrl({// 必須項目は、action と expiresaction:'read',expires:'03-09-2500',})}).then((urls:any[])=>{consturl=urls[0];returnurl})// 特に expires とか設定しないのであれば、`https://storage.googleapis.com/staging/test/${filename}` とかで返すことも可能.catch((err:any)=>{console.log(`Unable to upload encoded file ${err}`)})

参考にした記事
uploading buffer or string · Issue #2334 · googleapis/google-cloud-node · GitHub
File - Documentation


Viewing all articles
Browse latest Browse all 8691

Trending Articles