0

小さなファイル (約 5MB 未満) の場合、Fineuploader は署名のために完全なポリシー オブジェクトを送信し、一時的なリンクをクライアントに送信する posprocessing とサーバー側の管理要素を含めてアップロードが成功します。サーバーには公式のFineUploader S3 デモ PHP コードを使用します。https://github.com/Widen/fine-uploader-server/blob/master/php/s3/s3demo-thumbnails.php

署名リクエストの例 (フォーマット済み、匿名化済み):

{
    "expiration": "2013-12-28T12:57:42.354Z",
    "conditions": [
        {"acl": "private"},
        {"bucket": "TOP-SECRET-BUCKET-NAME"},
        {"Content-Type": "application/pdf"},
        {"success_action_status": "200"},
        {"key": "bfccb67e-5343-4e01-97ff-2dcffe681da0.pdf"},
        {"x-amz-meta-qqfilename": "plakat_a3.pdf"},
        ["content-length-range","0","1000111000111"]
    ]
}

応答には、ポリシーと署名が含まれています (フォーマット済み):

{
    "policy":"eyJleHBpcmF0aW9uIjoiMjAxMy0xMi0yOFQxMzoxODoyNy4yODhaIiwiY29uZGl0aW9ucyI6W3siYWNsIjoicHJpdmF0ZSJ9LHsiYnVja2V0IjoiZGVtb2Nza2EifSx7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uXC9wZGYifSx7InN1Y2Nlc3NfYWN0aW9uX3N0YXR1cyI6IjIwMCJ9LHsia2V5IjoiMWZiMjZmMjAtNjg2Ni00YjU1LTg3YTctZWZlMjNiOWMwZmY1LnBkZiJ9LHsieC1hbXotbWV0YS1xcWZpbGVuYW1lIjoicGxha2F0X2EzLnBkZiJ9LFsiY29udGVudC1sZW5ndGgtcmFuZ2UiLCIwIiwiMTAwMDExMTAwMDExMSJdXX0=",
    "signature":"Wlw1QJjwmsASyQemUWrYuktiQwE="
}

...しかし、より大きなファイルの場合、Fineupload は別の署名要求を送信します。これには、ヘッダー (フォーマット済み、匿名化済み) のみが含まれます。

{
    "headers": "POST\n\nvideo/quicktime\n\nx-amz-acl:private\nx-amz-date:Sat, 28 Dec 2013 12:53:13 GMT\nx-amz-meta-qqfilename:20MB_stopmot-minta.mov\n/TOP_SECRET-BUCKET-NAME/d2033a4c-1e55-49a0-8589-9b1725dcd013.mov?uploads"
}

応答には署名のみが含まれます (フォーマット済み):

{
    "signature":"jYtFC91wIPkZj31W\/vwuK9ClawU="
}

その場合、OPTIONSAmazon S3 へのリクエストは失敗します。

Request Headers 14:09:09.000
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
Pragma: no-cache
Origin: http://top-secret.example.com
Host: TOP-SECRET-BUCKET-NAME.s3.amazonaws.com
Connection: keep-alive
Cache-Control: no-cache
Access-Control-Request-Method: POST
Access-Control-Request-Headers: authorization,content-type,x-amz-acl,x-amz-date,x-amz-meta-qqfilename
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

応答:

  • ステータス: 403
  • 本体:

応答ヘッダー:

x-amz-request-id: 625913F399C626A2
x-amz-id-2: +enheIuZT0RJ+11THF1TuNsA6bCqE4a2ppsklK84k4KXdNX4UsuGhxPf00Eb137G
Transfer-Encoding: chunked
Server: AmazonS3
Date: Sat, 28 Dec 2013 13:18:01 GMT
Content-Type: application/xml

テストケース:

  • より小さい.mov, .mp3, .pdf,.logファイルでテスト済み: コース #1 (成功)
  • より大きなファイル (同じタイプ) でテスト済み: コース #2 (不合格)

違いの原因は何ですか?どうすれば修正できますか/修正する必要がありますか?

4

1 に答える 1

4

<ExposeHeader>ETag</ExposeHeader>Amazon S3 バケットのアクセス許可で CORS 設定に追加する必要がありました。したがって、最終的には次のようになります。

<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedMethod>DELETE</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <ExposeHeader>ETag</ExposeHeader>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

参照:

http://docs.fineuploader.com/endpoint_handlers/amazon-s3.html

于 2013-12-28T15:47:24.257 に答える