2016-07-11 7 views
0

私のwebserviceには、cUrlで正常に動作し、正常に動作する単純なアップロード機能があり、cUrlでファイルをアップロードできます。Ionライブラリでファイルをアップロードします。しかし、私はこのエラーを取得:Androidを使用してファイルをアップロードする

unable to parse json 

私のコードは次のとおりです。

Ion.with(ActivityAccountInfo.this) 
       .load(MyApplication.getHostAddress() + "clientUploadPhoto") 
       .uploadProgressHandler(new ProgressCallback() { 
        @Override 
        public void onProgress(long downloaded, long total) { 
         uploadMessage.setText("" + downloaded + "/" + total); 
        } 
       }) 
       .setTimeout(60 * 60 * 1000) 
       .setMultipartFile("userPhoto", "image/*", new File(photoPath)) 
       .asJsonObject() 
       // run a callback on completion 
       .setCallback(new FutureCallback<JsonObject>() { 
        @Override 
        public void onCompleted(Exception e, JsonObject result) { 
         if (e != null) { 

         } 
        } 
       }); 

と私のWeb機能:

に設定されたビットマップの後に、他のソリューションによって解決さ
+0

マルチパートファイルをJSONオブジェクトとしてアップロードできますか? –

+0

@ cricket_007ファイルはjsonObjectではなくストリームでなければならないと思いますよね?このソリューションを使って 'cUrl'がファイルをアップロードできる' Ion'ライブラリで –

+0

どのようなcURLコマンドを使ったのかわかりませんが、 '.asJsonObject()'はファイルのアップロードを正しく見せていません。 –

答えて

0

問題は、私はこのコードでそれからビットマップを取得:

Bitmap bitmap = ((BitmapDrawable) user_avatar.getDrawable()).getBitmap(); 

その後、私はそれからBase64を作成するよ:今

public String getStringImage(Bitmap bmp) { 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    bmp.compress(Bitmap.CompressFormat.JPEG, 60, baos); 
    byte[] imageBytes = baos.toByteArray(); 
    String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT); 
    return encodedImage; 
} 

私はIonでそれをアップロードすることができ、私はその内部のサーバーを変換する:

phpラーベールのフレームワーク:

public function clientUploadPhoto() 
{ 
    $image = Request::json()->get('file'); 
    $ext = Request::json()->get('ext'); 

    file_put_contents(base_path() . '/upload/'.time().$ext,base64_decode($image)); 
} 
関連する問題