2014-10-01 147 views
0

淨傢伙在一個Java應用程序谷歌驅動器上傳文件,讀取文件

我用下面的例子作爲我的出發點上傳的工作(我有這方面的工作)。這顯示了使用FileContent需要一個java.io.File,它不包含實際文件只是一個指向實際文件的指針。

我們從一個網站上傳並嘗試插入驅動器,我寧願使用像.Net示例一樣的內存流來執行此操作。我看不到在FileContent類。所以我的任務是:有沒有辦法將文件插入內存中的Google驅動器中,而不是先在硬盤上插入?

private static File insertFile(Drive service, String title, String description, 
    String parentId, String mimeType, String filename) { 
// File's metadata. 
File body = new File(); 
body.setTitle(title); 
body.setDescription(description); 
body.setMimeType(mimeType); 

// Set the parent folder. 
if (parentId != null && parentId.length() > 0) { 
    body.setParents(
     Arrays.asList(new ParentReference().setId(parentId))); 
} 

// File's content. 
java.io.File fileContent = new java.io.File(filename); 
FileContent mediaContent = new FileContent(mimeType, fileContent); 
try { 
    File file = service.files().insert(body, mediaContent).execute(); 

    // Uncomment the following line to print the File ID. 
    // System.out.println("File ID: " + file.getId()); 

    return file; 
} catch (IOException e) { 
    System.out.println("An error occured: " + e); 
    return null; 
} 
} 

回答

0

覆蓋的AbstractInputStream建立自己的FileContent

package com; 

import java.io.IOException; 
import java.io.InputStream; 
import com.google.api.client.http.AbstractInputStreamContent; 
import com.google.api.client.util.Preconditions; 

public class FileContent extends AbstractInputStreamContent { 

private InputStream inputStream = null; 
private long inputLength = 0; 

public FileContent(String type, InputStream pInputStream) throws IOException { 
    super(type); 
    this.inputStream = Preconditions.checkNotNull(pInputStream);   
    this.inputLength = this.inputStream.available(); 
} 

public long getLength() throws IOException { 
    return this.inputLength; 
} 

public boolean retrySupported() { 
    return false; 
} 

@Override 
public InputStream getInputStream() throws IOException { 
    return this.inputStream; 
} 
} 
相關問題