0

google-api-java-client 是 Android 上一个很好的 web 服务 api 客户端,但是我的意思是一个问题并且在它上面花费了很多时间。

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

那么如何通过 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();
  }
}
4

3 回答 3

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();
  }
于 2012-11-03T13:48:30.883 回答
0

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

于 2012-10-27T13:46:28.683 回答
0

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

所以,看看'GenericJson.upload(ImgurImage)'的来源......

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

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

寻找一个设置“内容”的处理程序,并了解它如何处理 json 示例的字节和字符串。

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

于 2012-10-27T15:07:47.613 回答