Google Cloud Storageにファイルを送信する必要があるアプリケーションを開発しています。ユーザー確認なしにファイルをGCSに送信する最も良い方法
webappには、アップロードするファイルを選択するHTMLページがあります。
ユーザーにはGoogleアカウントがありません。
送信するファイルの量は5以下です。
私はGAEにファイルを送信したくないし、GAEはGCSに送信したくない。私は自分のユーザーがGCSに直接アップロードすることを希望します。
私は、アップロードのためにこのコードをした:
function sentStorage() {
var file = document.getElementById("myFile").files[0];
url = 'https://www.googleapis.com/upload/storage/v1/b/XXX/o?uploadType=resumable&name=' + file.name;
xhr = new XMLHttpRequest();
var token = 'ya29.XXXXXXXXXXXXXXX';
xhr.open('POST', url);
xhr.setRequestHeader('Content-Type', file.type);
// resumable
//url = 'https://www.googleapis.com/upload/storage/v1/b/XXXXXX/o?uploadType=resumable&name=' + file.name;
//xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
//xhr.setRequestHeader('Content-Length', file.size);
xhr.setRequestHeader('x-goog-project-id', 'XXXXXXXXXX');
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
xhr.send(file);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
var response = JSON.parse(xhr.responseText);
if (xhr.status === 200) {
alert('codigo 200');
} else {
var message = 'Error: ' + response.error.message;
console.log(message);
alert(message);
}
}
};
}
私はserviceaccount情報(Googleのコンソール)を取得し、それのためにトークンベアラを生成します。私は "jsonアカウント情報"を読み、トークンを生成するpythonファイルを使用しました。
私requisitは、ファイルを送信するために、ユーザは、この義務は、私のアプリケーションからのもので、任意のGoogleアカウントの情報を確認する必要がないということです。 (ユーザーはGoogleアカウントを持っていません)、htmlページはGAEまたはGCEに送信せずにGCSに直接ファイルを送信するため、HTMLフォームまたはJavascriptを使用する必要があります。私はJavascriptを好む。 このアプリケーションのユーザーだけがアップロードできます(アプリケーションはデータベースとの認証を持っているため)、匿名ユーザーはそれを行うことができません。
私の質問は以下のとおりです。
- このトークンの有効期限が切れますか?私はこのトークンを生成するためにserviceaccountを使用しました。
- これを行うには、より良いAPI javascriptがありますか?
- このセキュリティソリューションは優れていますか、別の方法を使用する必要がありますか?
ありがとうございます。 「署名されたURL」について読みましたが、今使っています! GCSにファイルを送信して取得し、自分のgithubに入れるアプリケーションを作成しました。 ここにあります:https://github.com/charlesasilva61/gcs-java-signed-url – javaTry