0

google-api-java-client は Android の優れた Web サービス API クライアントですが、問題があり、それに多くの時間を費やしています。

POSTメソッドでファイルをアップロードしたいのでgoogle-drive APIのソースコードを調べたのですが、メディアアップローダーを使ってgoogleドライブにファイルをアップロードしています。

google-api-java-client で POST メソッドを介してファイルをアップロードする方法は?

たとえば、Imgur アップロード API メソッドには 2 つの必須パラメーターがあります。

このように 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

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

テキストをアップロードするサンプル (コンテンツ内の json、REST URL エンドポイント内の json) を採用し、それを使用して画像のアップロード ( upload(ImgurImage) ) を試みたようです。

それで、「GenericJson.upload(ImgurImage)」のソースを見てください...

POST で 'exec' を呼び出す前に 'content' フィールドを設定すると、このメソッドが何をするかを確認してください。

これらのフレームワークでは、コンテンツ内の文字列とテキストを許可するか、画像と音声タイプのアップロードにビットマップ (バイト) を許可することを理解してください。

「コンテンツ」を設定するハンドラーを探し、それが json サンプルのバイトとストリングの両方をどのように処理するかを理解してください。

これは、選択したフレームワークを使用するのに役立ちます。

于 2012-10-27T15:07:47.613 に答える
0

MultiPartEntity の一部として、httpClient を使用し、FileBody を使用してサーバーにファイルを送信します。これは、Picasa、Flickr などで機能します。

于 2012-10-27T13:46:28.683 に答える