2012-04-14 23 views
1

私はdropbox java apiを使用し、.docファイルjpgやビデオファイルのようなバイナリファイルをアップロードする方法の例をいくつか見つけることができます。dropboxを使用してバイナリファイルをアップロードする

ウェブの現在の例は、テキストファイルをアップロードすることを指しています。しかし、私は、java InputStreamを使用してファイルを読み込み、バイト配列に変換して、ドロップボックスファイルアップロード関数ファイルに渡すと、ファイルが破損する可能性があります。ファイルをダウンロードする場合も同じ問題があります。前もって感謝します。

よろしく、 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

コードを投稿すると、どこに間違いがあるのか​​を示すことができます。 – dash1e

+0

こんにちは、ありがとう、私は自分のコードで質問を更新します。 – Waruna

答えて

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); 
+0

あなたの答えをありがとう、これは完全に動作します。この小さな間違いのために私はかなりの開発時間を失いました。 – Waruna

0

私はあなたが単にバイナリだけでなく、TXT、FileInputStreamのは、ファイルのために十分である使用し、バイト配列に変換する必要はないと思います。次のコードは動作しますが、私はちょうど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) {} 
     } 
    } 
関連する問題