1

Box.com サイトに 6 MB の txt ファイルがあります。次に、APIを使用してファイルをダウンロードしたいと思います。ダウンロードに時間がかかるので、gzip形式でダウンロードしたいと思います。こちらhttps://developers.box.com/docs/に示されているように、「gzip、deflate」という値を持つ accept-encoding ヘッダーを追加する必要があります。このヘッダーを追加しましたが、ファイルは zip ファイルとしてダウンロードされません。サイズは 6 MB と同じです。圧縮されている場合、サイズは 1 MB 未満である必要があります。

しかし、それは起こっていません。以下は、REST 要求で渡されるヘッダーです。

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)                      Chrome/36.0.1985.125 Safari/537.36
Authorization: Bearer ACCESSTOKEN
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,te;q=0.6

以下は応答ヘッダーです。

Server: nginx 
Date: Thu, 24 Jul 2014 16:24:56 GMT 
Content-Type: application/octet-stream 
Content-Length: 6685772 
Connection: keep-alive
Cache-control: private
Accept-Ranges: bytes
Content-Disposition: attachment;filename="abc.log";filename*=UTF-8''  
X-Content-Type-Options: nosniff
Accept-Ranges: bytes 

ここで見逃したものはありますか?

4

1 に答える 1

1

私は同じ問題に遭遇しました。しかし、なぜこれが起こっているのかについても理解しました。Box SDK ドキュメントの引用:

ファイルをダウンロードできる場合、dl.boxcloud.com の URL に対する 302 Found という応答が返されます。dl.boxcloud.com URL は永続的ではありません。実際にファイルをダウンロードするには、クライアントはリダイレクトに従う必要があります。ファイル ID が無効であるか、ユーザーがアクセス権を持っていない場合を除き、ファイルの生データが返されます。

注意すべき重要な点は、ファイルをダウンロードするために非永続的な URL へのクライアント リダイレクトがあることです。リダイレクト リクエストの一部として渡されるヘッダーのシーケンスを確認すると、Accept-Encoding: gzip deflateが欠落していることがわかります。私は Fiddler を使用してこれを試しました。他の HTTP プロキシまたはインターセプターを使用できます。

これが、 gzipエンコーディングを使用してファイルがダウンロードされない理由です。

お役に立てれば。

于 2014-08-06T05:29:57.200 に答える