你能指出我的代码或网址,我可以找到一些例子,如何使用dropbox java api和上传二进制文件,如.doc文件jpg和视频文件。
网络中的当前示例仅指向上传文本文件。但是当我尝试使用java InputStream读取文件并将它们转换为字节数组并传递到dropbox文件时,上传函数文件会被破坏。下载文件也是同样的问题。在此先感谢。
此致 Waruna。
EDIT-- 代码示例
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte [] buf = new byte[1024];
for(int readNum; (readNum = fis.read(buf)) != -1;) {
bos.write(buf, 0, readNum);
System.out.println("read "+ readNum + "bytes,");
}
ByteArrayInputStream inputStream2 = new ByteArrayInputStream(bos.toByteArray());
Entry newEntry = mDBApi.putFile("/uploads/"+file.getName(), inputStream2, file.toString().length(), null, null);
System.out.println("Done. \nRevision of file: " + newEntry.rev + " " + newEntry.mimeType);
return newEntry.rev;
答案 0 :(得分:1)
DropboxAPI.putFile()
的第三个参数应该是从输入流中读取的字节数 - 您传递的是文件名的长度。
而不是
Entry newEntry = mDBApi.putFile("/uploads/"+file.getName(), inputStream2,
file.toString().length(), null, null);
使用
Entry newEntry = mDBApi.putFile("/uploads/"+file.getName(), inputStream2,
bos.size(), null, null);
答案 1 :(得分:0)
我认为你不需要转换为字节数组,只需使用FileInputStream就足够了一个文件,txt以及二进制文件。以下代码有效,我刚用JPG测试过。
DropboxAPI<?> client = new DropboxAPI<WebAuthSession>(session);
FileInputStream inputStream = null;
try {
File file = new File("some_pic.jpg");
inputStream = new FileInputStream(file);
DropboxAPI.Entry newEntry = client.putFile("/testing.jpg", inputStream,
file.length(), null, null);
System.out.println("The uploaded file's rev is: " + newEntry.rev);
} catch (DropboxUnlinkedException e) {
// User has unlinked, ask them to link again here.
System.out.println("User has unlinked.");
} catch (DropboxException e) {
System.out.println("Something went wrong while uploading.");
} catch (FileNotFoundException e) {
System.out.println("File not found.");
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {}
}
}