アップロードされたファイルのサイズを
6553 ワード
Koliseoでは、我々のユーザーは、イベントのために使用されるアカウントのアバターやバナーを変更するイメージをアップロードする必要があります.イメージのトリミング、リサイズとフォーマットを残します-それは別々のポストのために十分以上です.
ファイルをアップロードするために符号付きURLを使用する理由はいくつかあります.それはGoogleによって管理された安全な機能です. 我々のプラットホームから大きいファイルを抽出することは、それがより速く縮小するのをより速くします.私たちはどんなバケツの上で我々のユーザーにパーミッションを割り当てません.ちょうどX分にこのコンテンツタイプでファイルをアップロードするのに有効なURLに署名してください. CPUのサイクル+メモリ+ GCEの帯域幅+ GCEストレージ当社のサーバー上でこれらの要求を受信します.唯一の欠点:それは不敬なハードです.
Signed URLs on GCS
リクエストを再開可能なアップロードで置く
符号付きURLを使用してコンテンツをアップロードする2つのオプションがあります:投稿(HTMLフォームのエンコードを使用)とJavaScriptコードからフェッチ要求として実行することができます要求を置く.バージョンv 4はどのように再起動可能なアップロードを使用して後者を行うには、ライブラリが透過的にあなたのサーバーからの最初の投稿要求を実行し、クライアントのコードからプットフェッチで使用することができますURLの結果. .
主な問題:There are some code examples hereは、最大のファイルサイズに生成されたリンクを制限するために、
Koliseoで、我々は一緒にイベント管理のためのツールの次世代を入れている.あなたが我々が建築しているものとどのように興味があるならば、確認してください.
ファイルをアップロードするために符号付きURLを使用する理由はいくつかあります.
Signed URLs on GCS
リクエストを再開可能なアップロードで置く
符号付きURLを使用してコンテンツをアップロードする2つのオプションがあります:投稿(HTMLフォームのエンコードを使用)とJavaScriptコードからフェッチ要求として実行することができます要求を置く.バージョンv 4はどのように再起動可能なアップロードを使用して後者を行うには、ライブラリが透過的にあなたのサーバーからの最初の投稿要求を実行し、クライアントのコードからプットフェッチで使用することができますURLの結果. .
主な問題:There are some code examples hereは、最大のファイルサイズに生成されたリンクを制限するために、
Content-Length
はPUTリクエストで無視されるので.代わりに、サーバーによって生成された再開可能なアップロードを含むContent-Length
を使用することができます.Map<String, String> extensionHeaders = new HashMap<>();
extensionHeaders.put("X-Upload-Content-Length", "" + contentLength);
extensionHeaders.put("Content-Type", "application/octet-stream");
var url =
storage.signUrl(
blobInfo,
15,
TimeUnit.MINUTES,
Storage.SignUrlOption.httpMethod(HttpMethod.PUT),
Storage.SignUrlOption.withExtHeaders(extensionHeaders),
Storage.SignUrlOption.withV4Signature()
);
これを行うと、ContentLengthの値を検証でき、大きすぎる場合は拒否します.生成されたURLはアップロードされたファイルに同じサイズを必要とします.クライアント側(const response = await fetch(url, {
method: 'PUT',
headers: {
'X-Upload-Content-Length': `${file.size}`,
'Content-Type': 'application/octet-stream',
},
body: file,
});
また、我々のバケツにCORSポリシーを割り当てる必要があります.[
{
"origin": ["https://your-website.com"],
"responseHeader": [
"Content-Type",
"Access-Control-Allow-Origin",
"X-Upload-Content-Length",
"X-Goog-Resumable"
],
"method": ["PUT", "OPTIONS"],
"maxAgeSeconds": 3600
}
]
…そしてそれだ!今、私たちはファイルサイズを制限してGCSに直接ファイルをアップロードしています.同様に、必要に応じてX-Upload-Content-Length
や他のヘッダについても確認できます.Koliseoで、我々は一緒にイベント管理のためのツールの次世代を入れている.あなたが我々が建築しているものとどのように興味があるならば、確認してください.
Reference
この問題について(アップロードされたファイルのサイズを), 我々は、より多くの情報をここで見つけました https://dev.to/nachocoloma/limit-the-size-of-uploaded-files-with-signed-urls-on-gcs-4e34テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol