gpt4 book ai didi

java - 谷歌文档 API "setMd5Checksum"不工作

转载 作者:行者123 更新时间:2023-11-29 09:16:03 25 4
gpt4 key购买 nike

最近我在 Java 中实现了一个应用程序使用 Google Docs API v3.0 .新条目是这样创建的:

DocumentListEntry newEntry = new  DocumentListEntry();
newEntry.setFile(file, Common.resolveMimeType(file)); //Common is a custom class
newEntry.setFilename(entryTitle.getPlainText()); //entryTitle is a TextConstruct
newEntry.setTitle(entryTitle);
newEntry.setDraft(false);
newEntry.setHidden(file.isHidden());
newEntry.setMd5Checksum(Common.getMD5HexDigest(file));

请相信我,Common.getMD5HexDigest(file) 会返回一个有效且唯一的 MD5 十六进制哈希值。

现在,文件可以正常上传了,但是在通过entry.getMd5C​​hecksum() 方法检索文件和检查MD5 校验和时,总是返回null

我已经尝试了所有方法,甚至设置了 ETagResourceIDVersionID 但它们都被默认值覆盖了( null 或服务器生成的字符串)。

最佳答案

我猜想您需要将校验和设置为文件内容 的 md5 哈希值,而不是路径名 的哈希值>。

为什么他们(谷歌)会关心路径?这根本没有意义。如果我误解了您的代码,请原谅我,但我认为您误解了文件校验和的概念。

无论如何,您需要做的是吃掉(消化)文件而不是路径:

   import java.security.*;
import java.util.*;
import java.math.*;
import java.io.*;

public class MD5 {
private MessageDigest mDigest;
private File openFile;
private FileInputStream ofis;
private int fSize;
private byte[] fBytes;

public MD5(String filePath) {
try { mDigest = MessageDigest.getInstance("MD5"); }
catch (NoSuchAlgorithmException e) { System.exit(1); }
openFile = new File(filePath);
}
public String toString() {
try {
ofis = new FileInputStream(openFile);
fSize = ofis.available();
fBytes = new byte[fSize];
ofis.read(fBytes);
} catch (Throwable t) {
return "Can't read file or something";
}

mDigest.update(fBytes);
return new BigInteger(1, mDigest.digest()).toString(16);
}
public static void main(String[] argv){
MD5 md5 = new MD5("someFile.ext");
System.out.println(md5);
}
}

所以上面代码段中的错误在这里:

 messageDigest.update(String.valueOf(file.hashCode()).getBytes());

现在,我可以证明我的类给出了文件 的正确 md5sum,这很可能是您需要的。如果您不相信我,请阅读该方法的 javadoc: http://gdata-java-client.googlecode.com/svn/trunk/java/src/com/google/gdata/data/docs/DocumentListEntry.java它说的是:* 设置为文档计算的 MD5 校验和。...与路径的校验和无关:)

这里:

$ echo "Two dogs are sleeping on my couch" > someFile.ext    
$ echo "Two dogs are sleeping on my couch" |md5sum
1d81559b611e0079bf6c16a2c09bd994 -
$ md5sum someFile.ext
1d81559b611e0079bf6c16a2c09bd994 someFile.ext
$ javac MD5.java && java MD5
1d81559b611e0079bf6c16a2c09bd994

关于java - 谷歌文档 API "setMd5Checksum"不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9365279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com