2016-07-07 14 views
0

に私は、ファイルサイズは下記のコードを使用して、32メガバイト未満であるとき、私は成功しBlobstoreにアップロードすることができAngularJSAngularJS直接アップロードGoogleクラウドストレージエラー

から直接GCSに32メガバイトよりもファイルサイズをアップロードします。私は、URL https://storage.googleapis.com/bucket-name/filenameを使用してファイルをアップロードしようとすると

$http.post(uploadUrl, $scope.formData, { 
    withCredentials: true, 
    headers: {'Content-Type': undefined}, 
    transformRequest: angular.identity 
}); 

、私は次のエラーを得ました。私は、HTTPポストで使用されるフラグwithCredentials: trueを削除すると、私は403のように応答を得た

Credentials flag is 'true', but the 'Access-Control-Allow-Credentials' header is ''. It must be 'true' to allow credentials. Origin 'http://localhost:8080' is therefore not allowed access.

は、エラーの詳細が与えられていません。

サーバーにAccess-Control-Allow-Credentialsフラグを有効にする方法アップロードバケット [{"maxAgeSeconds": 3600, "method": ["GET", "POST", "HEAD"], "origin": ["http://localhost:8088"], "responseHeader": ["Content-Type"]}]

で述べたように私はCORSを設定していますか?

答えて

1

クラウドストレージに切り替えるのではなく、ブロブストアを引き続き使用しながら、これを達成できます。 Googleドキュメントはかなりうまく処理されます。警告:これはGoogleが従来の機能としてサポートしているように私には聞こえるが、代わりにCould Storageを使用することをお勧めします。私はこれを個人的にしていませんが、Signed URLsのように聞こえるかもしれません。

blobstoreを続行する場合は、私のように、サーバー側のJavaセットアップの手順はhereです。同様のURLで他の言語と同様の手順を見つける必要があります。 :)

私が最初に理解していなかった厄介な部分は、ダイレクトアップロード要求がそのことを行い、次にアップロードに関する情報をサーバーに直接呼び出すと、サーバーの応答が返されますクライアント。たとえば、サーバのアップロードハンドラにAccess-Control-Allow-Originヘッダーを設定すると、ダイレクトアップロードリンクからの応答に追加されます。

+0

こんにちは@Eric、返信いただきありがとうございます。私は同じエラーが発生したと示唆しているように署名されたURLを試しました。ダウンロードは成功ですが、アップロードはできません。ブロブストアを介してアップロードする場合、別のエラーが発生しました。http://stackoverflow.com/questions/38344261/gcs-heap-error-when-file-of-higher-size-was-uploadedを参照してください。 httpProviderのデフォルトヘッダー '$ httpProvider.defaults.headers.common ['Access-Control-Allow-Origin'] = '*';' with 'withCredentialsを変更して、 'Access-Control-Allow- :false'設定はあまり役に立たない。ヘッダーの使用について私を導くことができますか? – SetV

+0

_server_から送信された_response_にそのヘッダーを設定する必要があります。クライアントからの要求はありません。だからあなたのJavaコード(あなたがリンクしている他の質問からあなたの言語を選んでください)では、 'resp.setHeader(" Access-Control-Allow-Origin "、" * ");'を使うことができます。 –

+0

こんにちは@エリック、私はあなたの最初の2つのソリューションに固執することができます。それは本当に役立ちます! – SetV

関連する問題