2016-03-21 19 views
0

outputstreamを使用してGoogleドライブにファイルをアップロードしようとしています。私が働いているこのサンプルテスト持ちアップロードについて出力ストリームを使用してGoogleドライブにファイルをアップロード

public void downloadStarted() throws Exception 
    { 
     HttpResponse resp = drive.getRequestFactory().buildGetRequest(new GenericUrl(file.getDownloadUrl())).execute(); 
     serverInputStream = resp.getContent(); 
    } 

private static File uploadFile(boolean useDirectUpload) throws IOException 
{ 
    File fileMetadata = new File(); 
    fileMetadata.setTitle(UPLOAD_FILE.getName()); 

    FileContent mediaContent = new FileContent("*/*", UPLOAD_FILE); 

    Drive.Files.Insert insert = drive.files().insert(fileMetadata, mediaContent); 

    MediaHttpUploader uploader = insert.getMediaHttpUploader(); 

    uploader.setDirectUploadEnabled(useDirectUpload); 
    uploader.setProgressListener(new FileUploadProgressListener()); 
    return insert.execute(); 
} 

を私は本当にoutputstreamを必要とし、どのように考えているのダウンロードで、私はInputStreamこの方法を取得することができましたそれを得る。どんな助け?

答えて

1

OutputStreamをGoogleドライブHTTP APIで直接書き込むことはできないと思います。 Drive.Files.create()insert()AbstractInputStreamContentを受け入れますので、InputStreamにする必要があります。

ByteArrayOutputStream out = new ByteArrayOutputStream(); 
// use out 
File file = drive.files().create(fileMetadata, new ByteArrayContent("", 
    out.toByteArray())).setFields("id").execute(); 

働くかもしれないもう一つのアイデアは、PipedInputStream/PipedOutputStreamを使用することです。この問題を回避するには、このようなものになるだろう。 をThreadの内側に置き、ブロックしないようにします。

関連する問題