2017-10-26 14 views
0

ギャラリーからFirebaseストレージに画像をアップロードするアン​​ドロイドアプリケーションを作成します.HttpPostを使用して画像をアップロードする必要があります。HttpPostを使用してアンドロイドギャラリーからFirebaseストレージに画像をアップロード

私のコードは次のとおりです。以下のようである私はpostAvatarToServerを呼び出すdoInBackgroundメソッドで

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent 
data) { 
switch (requestCode) { 
case TAKE_AVATAR_GALLERY_REQUEST: 
if (resultCode == Activity.RESULT_OK) { 
Uri photoUri = data.getData(); 
Bitmap avatar= Media.getBitmap(getContentResolver(), photoUri); 
String strAvatarFilename = "avatar.jpg"; 
try { 
avatar.compress(CompressFormat.JPEG, 100, 
openFileOutput(strAvatarFilename, MODE_PRIVATE)); 
} catch (Exception e) { 
Log.e(DEBUG_TAG, "Avatar compression and save failed.", e); 
} 

Uri imageUriToSaveCameraImageTo = Uri.fromFile(new File(
QuizSettingsActivity.this.getFilesDir(), strAvatarFilename)); 
Editor editor = mGameSettings.edit(); 
editor.putString(GAME_PREFERENCES_AVATAR, 
imageUriToSaveCameraImageTo.getPath()); 
editor.commit(); 

:!

logcatで
private boolean postAvatarToServer() { 
    boolean succeeded = false; 
    String avatar = mGameSettings.getString(GAME_PREFERENCES_AVATAR, ""); 
    MultipartEntity entity = new 
      MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 
    File file = new File(avatar); 
    if (file.exists()) { 
     FileBody encFile = new FileBody(file); 
     entity.addPart("avatar", encFile); 
     HttpPost request = new 
      HttpPost("https://firebasestorage.googleapis.com/v0/b/HERE I 
      WRITE THE FOLDER URL WITHOUT [gs://]/o/"); 
     request.setEntity(entity); 
     HttpClient client = new DefaultHttpClient(); 
     try { 
      HttpResponse response = client.execute(request); 
      HttpEntity r_entity = response.getEntity(); 
      int statusCode = response.getStatusLine().getStatusCode(); 
      String responseString = null; 
      if (statusCode == 200) { 
        responseString = EntityUtils.toString(r_entity); 
      } else { 
        responseString = "Error occurred! Http Status Code: " 
           + statusCode; 
      } 
      succeeded = true; 

     } catch (ClientProtocolException e) { 
      Log.e(DEBUG_TAG, "Unexpected ClientProtocolException",e); 
     } catch (IOException e) { 
      Log.e(DEBUG_TAG, "Unexpected IOException", e); 
     } 
} else { 
    Log.d(DEBUG_TAG, "No avatar to upload"); 
    succeeded = true; 
      } 
    return succeeded; 

     } 

私が手にエラーが発生しました! HTTPステータスコード:400

ので誤差があり、それを解決する方法を...

答えて

0

the existing Android SDKを使用しないのはなぜ?

Uri file = Uri.fromFile(new File("path/to/local/file.jpg")); 
StorageReference storageRef = storageRef.child("images/"+file.getLastPathSegment()); 
uploadTask = storageRef.putFile(file); 
+0

はい、私はそれを使用できることを知っています。私はそれとその作業を試みますが、私はHttpPostを使用してアップロードを行う必要があります。私のコードはHttpPostを使ってFirebaseにイメージをアップロードできることを証明するためのものです – user216905

関連する問題