2012-10-27 44 views
0

google-api-java-client在Android上是一個很好的web服務api客戶端,但是我的意思是一個問題,並且花很多時間在它上面。如何使用POST方法在google-api-java-client中上傳文件?

我想通過POST方法上傳文件,所以我研究谷歌驅動器的API源代碼,但它使用媒體上傳器上傳文件到谷歌驅動器。

那麼如何通過POST方法在google-api-java-client中上傳文件?

例如Imgur上傳API方法有兩個require參數。

假設一個上傳文件的API用google-api-java-client寫成這樣,但我不知道該如何填寫'image'字段,它標記着?

public class ImgurImage extends GenericJson { 
    @com.google.api.client.util.Key("key") 
    private String mKey; 

    @com.google.api.client.util.Key("image") 
    private ??? mImage 
} 

public class Upload extends JsonHttpRequest { 
    private static final String REST_PATH = "/2/upload.json" 

    private Upload(ImgurImage content) { 
    super(ImgurClient.this, HttpMethod.POST, REST_PATH, content); 
    } 

    public void execute() throws IOException { 
    executeUnparsed(); 
    } 
} 

回答

0

我使用的HttpClient我用FileBody將文件發送到服務器,作爲MultiPartEntity的一部分。這適用於Picasa,Flickr等。

+0

用於uplaoding MP4/3GP甚至成功? –

0

它看起來像您採用了上傳文本(內容中的json,REST URL端點中的json)並用它嘗試上傳圖片(上傳(ImgurImage))的示例。

所以,看看來源爲「GenericJson.upload(ImgurImage)」 ......

見當設置了「內容」字段此方法所做的呼籲POST「EXEC」之前。

瞭解這些框架將允許內容中的字符串和文本,或者允許圖像和音頻類型上傳的位圖(字節)。

查找處理程序,它設置'內容'並理解它如何處理json示例的字節和字符串。

應該幫助你使用你選擇的框架。

1

我建議您看看我們的驅​​動器API樣品在http://samples.google-api-java-client.googlecode.com/hg/drive-cmdline-sample/instructions.html

這裏有一個代碼片段:

private static final java.io.File UPLOAD_FILE = new java.io.File(UPLOAD_FILE_PATH); 

    /** Uploads a file using either resumable or direct media upload. */ 
    private static File uploadFile(boolean useDirectUpload) throws IOException { 
    File fileMetadata = new File(); 
    fileMetadata.setTitle(UPLOAD_FILE.getName()); 
    InputStreamContent mediaContent = new InputStreamContent("image/jpeg", new BufferedInputStream(
     new FileInputStream(UPLOAD_FILE))); 
    mediaContent.setLength(UPLOAD_FILE.length()); 
    Drive.Files.Insert insert = drive.files().insert(fileMetadata, mediaContent); 
    MediaHttpUploader uploader = insert.getMediaHttpUploader(); 
    uploader.setDirectUploadEnabled(useDirectUpload); 
    uploader.setProgressListener(new FileUploadProgressListener()); 
    return insert.execute(); 
    } 
相關問題