如何使用POST方法在google-api-java-client上传文件?

时间:2012-10-27 12:05:59

标签: android google-api-java-client

google-api-java-client是Android上一个很好的网络服务api客户端,但我的意思是一个问题并花费大量时间。

我想通过POST方法上传文件,因此我研究了google-drive API源代码,但它使用媒体上传程序将文件上传到google驱动器。

那么如何通过google-api-java-client中的POST方法上传文件?

例如,Imgur上传API方法有两个require参数。

假设用google-api-java-client编写的上传文件API就像这样,但我不知道如何填写标有???的

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();
  }
}

3 个答案:

答案 0 :(得分:1)

我建议您在http://samples.google-api-java-client.googlecode.com/hg/drive-cmdline-sample/instructions.html

查看我们的Drive API示例

以下是代码段:

  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();
  }

答案 1 :(得分:0)

我使用httpClient并使用FileBody将文件发送到服务器,作为MultiPartEntity的一部分。这适用于Picasa,Flickr等。

答案 2 :(得分:0)

看起来您采用的是上传文本的示例(内容中的json,REST URL端点中的json)并使用它来尝试上传图片(上传(ImgurImage))。

那么,看看'GenericJson.upload(ImgurImage)'的来源......

了解在POST上调用'exec'之前设置'content'字段时此方法的作用。

了解这些框架将允许内容中的字符串和文本,或允许图像和音频类型上传的位图(字节)。

查找设置'content'的处理程序,并了解它如何处理json样本的字节和字符串。

应该可以帮助您使用您选择的框架。