4

マイクロソフト紺碧にいくつかの写真を保存しています。アップロードとダウンロードはうまく機能しています。ただし、アップロードおよびダウンロードとは別に、アップロードされたデータをmd5-hashで確認したいと思います。これが私のコードです(接続とアカウント全体が機能します。コンテナーもnullではありません):

public String getHash(String remoteFolderName, String filePath) {

    CloudBlob blob = container.getBlockBlobReference(remoteFolderName + "/" + filePath);

    return blob.properties.contentMD5
}

問題は、blobごとに常にnullを取得することです。私はそれを正しい方法で行っていますか、それともブロブのmd5-ハッシュを取得する他の可能性がありますか?

4

2 に答える 2

4

私はこの問題を解決しました。smarxがそれを解決した方法です。アップロードする前に、ファイルのmd5-Hashを計算し、blobのプロパティで更新します。

import java.security.MessageDigest
import com.microsoft.windowsazure.services.core.storage.utils.Base64;
import com.google.common.io.Files

String putFile(String remoteFolder, String filePath){
    File fileReference = new File (filePath)
    // the user is already authentificated and the container is not null
    CloudBlockBlob blob = container.getBlockBlobReference(remoteFolderName+"/"+filePath);
    FileInputStream fis = new FileInputStream(fileReference)
    if(blob){
        BlobProperties props = blob.getProperties()

        MessageDigest md5digest = MessageDigest.getInstance("MD5")
        String md5 = Base64.encode(Files.getDigest(fileReference, md5digest))

        props.setContentMD5(md5)
        blob.setProperties(props)
        blob.upload(fis, fileReference.length())
        return fileReference.getName()
   }else{
        //ErrorHandling
        return ""
   }
}

ファイルがアップロードされた後、次の方法でContentMD5を取得できます。

String getHash(String remoteFolderName, String filePath) {
    String fileName = new File(filePath).getName()
    CloudBlockBlob blob = container.getBlockBlobReference(remoteFolderName+"/"+filePath)
    if(!blob) return ""
    blob.downloadAttributes()
    byte[] hash = Base64.decode(blob.getProperties().getContentMD5())
    BigInteger bigInt = new BigInteger(1, hash)
    return bigInt.toString(16).padLeft(32, '0')
} 
于 2012-06-10T08:17:34.603 に答える
2

MD5ハッシュは、blobのアップロード時に設定された場合にのみ使用できます。詳細については、次の投稿を参照してください:http: //blogs.msdn.com/b/windowsazurestorage/archive/2011/02/18/windows-azure-blob-md5-overview.aspx

これらのブロブにMD5ハッシュが設定されていない可能性はありますか?

于 2012-06-08T18:45:21.680 に答える