0

METADATAAzure BLOB コンテナーに特定のファイルをアップロードしようとしています。

私が.net SDKでそれを行うと、単純に1つだけが送信されput、すべてが本来metadataあるべきものになります。

ただし、Java で試してみると 3 が送信され、コマンドを発行するまで反映されず、3 回目まで反映されませputsん。metadatacBlockBlob.uploadProperties()put

なぜ 3 を通過するのputsですか?JAVA sdkの問題ですか?

これが1投目です

*PUT /mycontainer/0721ef8f-8d70-4b91-9d1f-04757363f903.xml?blockid=AAAAAEm%2FC%2FE%3D& comp=block&sr=c&timeout=4&si=WriteOnly& sig=eUe%2Fe7kcFcmiIzOVNgqbXd%2BjlIN3ZQd8fkQq3IsHQVQ%3D HTTP/1.1
x-ms-version: 2011-08-18
User-Agent: WA-Storage/Client v0.1.1
Content-Type: 
Host: certainhost.blob.core.windows.net
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-Length: 4613*

これは2番目のプットです

*PUT /mycontainer/0721ef8f-8d70-4b91-9d1f-04757363f903.xml?comp=blocklist&sr=c&timeout=4&si=WriteOnly&sig=eUe%2Fe7kcFcmiIzOVNgqbXd%2BjlIN3ZQd8fkQq3IsHQVQ%3D HTTP/1.1
x-ms-version: 2011-08-18  
User-Agent: WA-Storage/Client v0.1.1
Content-Type: 
Content-MD5: hYRJFeM5RFH29bPj3oxhwA==
Host: certainhost.blob.core.windows.net
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-Length: 100*

<?xml version='1.0' encoding='UTF-8'?><BlockList><Uncommitted>AAAAAEm/C/E=</Uncommitted></BlockList>

これは 3 番目のプットです (required と表示されているものmetadata)

*PUT /mycontainer/0721ef8f-8d70-4b91-9d1f-04757363f903.xml?comp=properties&sr=c&timeout=4&si=WriteOnly&sig=eUe%2Fe7kcFcmiIzOVNgqbXd%2BjlIN3ZQd8fkQq3IsHQVQ%3D HTTP/1.1
x-ms-version: 2011-08-18
User-Agent: WA-Storage/Client v0.1.1
Content-Type: 
x-ms-blob-content-encoding: utf-8
x-ms-meta-x-ms-meta-versionCFDI: 3.2
Host: certainhost.blob.core.windows.net
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-Length: 0*

これは.net SDKに入れられた唯一のものです

*PUT /mycontainer/0721ef8f-8d70-4b91-9d1f-04757363f903.xml?comp=properties&sr=c&timeout=4&si=WriteOnly&sig=eUe%2Fe7kcFcmiIzOVNgqbXd%2BjlIN3ZQd8fkQq3IsHQVQ%3D HTTP/1.1
x-ms-version: 2009-09-19
User-Agent: WA-Storage/6.0.6002.18312
x-ms-blob-type: BlockBlob
x-ms-meta-versionCFDI: 3.2
Host: certainhost.blob.core.windows.net
Content-Length: 6841
Connection: Keep-Alive*

別の何か、これはどういう意味ですか?

<?xml version='1.0' encoding='UTF-8'?><BlockList><Uncommitted>AAAAAEm//E=</Uncommitted></BlockList>

2 番目のプットで送信され、.net では表示されません。

4

1 に答える 1

0

何が起こっているのかというと、JAVA SDKがファイルをブロックに分割し、それらのブロックをアップロードしていると思います。最初のPUTは「PUTBlock」リクエストで、2番目は「CommitBlock List」リクエストで、3番目は「SetMetadata」リクエストです。REST APIのドキュメントに基づいて、「ブロックリストのコミット」操作中にBLOBのメタデータを設定することもできます(http://msdn.microsoft.com/en-us/library/windowsazure/dd179467.aspx)。.Net SDKがこのファイルを1回のリクエストでアップロードするのに対し、JavaSDKがファイルをブロックに分割してアップロードするのは奇妙に思えます。これがJavaSDKでの実装方法であるとしても、私は驚かないでしょう。アップロードしようとしているファイルのサイズはどれくらいですか?

2番目の質問に関しては、これが「ブロックリストのコミット」操作のペイロードです。

于 2012-09-27T03:40:32.680 に答える