data:画像データのurlファイルをBlobアップロードバックエンドメソッドに渡す。
2022-01-31 23:19:44
キャンバスから取得した画像や、WeChat開発用SDKからdata:img形式で返された画像など、サーバーにアップロードする必要がある場合、変換が必要なシナリオがあります。
dataURLをBlobに変換する
// base64 to blob
dataURItoBlob(dataURI) {
// convert base64/URLEncoded data component to raw binary data held in a string
let byteString;
if (dataURI.split(',')[0].indexOf('base64') >= 0) {
byteString = atob(dataURI.split(',')[1]);
} else byteString = unescape(dataURI.split(',')[1]);
// separate out the mime component
const mimeString = dataURI
.split(',')[0]
.split(':')[1]
.split(';')[0];
// write the bytes of the string to a typed array
const ia = new Uint8Array(byteString.length);
for (let i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
return new Blob([ia], { type: mimeString });
},
フォームアップロードフォームの構築
const blob = dataURItoBlob(imgDataUrl);
const formData = new FormData();
// formData.append('auth', state.token.auth); you can optionally add some authentication
formData.append('file', blob);
To do the data upload, I'm using axios here
const params = {
url: '/store/file',
payload: formData
};
const data = await this.upload(params);
アクシオスをラップしました
export const upload = (params) => {
const { url, payload } = params
return axios.post(url, payload, {
headers: {
'Content-Type': 'multipart/form-data'
}
}).then(x => x.data)
}
以上、本記事の全内容をご紹介しましたが、皆様の学習のお役に立てれば幸いです。また、Script Houseをより一層応援していただければ幸いです。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン