8

Wir versuchen, doppelte Dateien zu vermeiden. Unser md5-Ergebnis unterscheidet sich jedoch immer von BlobInfo.Wie wird md5Hash für com.google.appengine.api.blobstore.BlobInfo berechnet

Wie wir berechnen es:

MessageDigest messageDigest = java.security.MessageDigest.getInstance("MD5"); 
    digest = messageDigest.digest(bytes); 
    String digestString = DigestUtils.md5Hex(digest); 

Es stimmt nicht überein: mit (new BlobInfoFactory().loadBlobInfo(blobKey)).getMd5Hash();

Beispiel Fehlpaarungen:

google vs my own calculation: 
8cdeb6db94bc4fd156e2975fd8ebbcf2 vs 9003b37afbf3637de96c35774069453f 
65a25dafcba58d16d58a9c7585cc3932 vs 52383159f7d27417d50121aaee2728b5 
5cccc2d690fdc0c254234d5526876b34 vs 8196da9b6733daa60e08d927693df483 

Es ist auf dem Produktionsserver. (wir haben die Dev-Umgebung nicht getestet)

+0

Versuchen Sie dies im Devappserver oder in Prod? –

+0

Können Sie auch posten, was Sie bekommen und was Sie erwarten. Welche Datei laden Sie hoch? –

+0

Beide Fragen beantwortet. Die Dateien sind in der Regel PDF und Bilder (JPEG). –

Antwort

7

Sebastian Kreft ist in der obigen Diskussion in Kommentaren richtig.

Der Code, den ich kopiert habe, ist falsch. es sollte nur sein:

String digestString = DigestUtils.md5Hex(bytes); 

Sebastian Kreft verwendet, um den Trick leere Datei md5 zu überprüfen, die immer d41d8cd98f00b204e9800998ecf8427e sein sollen!