无法上传图片Cloudinary - Android

时间:2016-10-14 12:39:43

标签: android image upload cloudinary

我无法上传Android的图像到Cloudinary,我不知道为什么,尝试上传时出错。不要只做任何消息方法抛出' java.io.IOException'异常。

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

if(resultCode == RESULT_OK){
     Bitmap imageBitmap = (Bitmap) extras.get("data");
          Uri uri = getImageUri(getApplicationContext(), imageBitmap);  
            InputStream in = null;    
            try {
                in = getContentResolver().openInputStream(uri);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }   
            Map config = new HashMap();
            config.put("cloud_name", "...");
            config.put("api_key", "...");
            config.put("api_secret", "...");
            Cloudinary mobileCloudinary = new Cloudinary(config);    
            try {
                mobileCloudinary.uploader().upload(in, ObjectUtils.asMap("public_id", "sample_remote"));
            } catch (IOException e) {
                e.printStackTrace();
            }
}

1 个答案:

答案 0 :(得分:0)

上传呼叫需要服务器通信。 Android不允许它在主(UI)线程上发生。 您可以尝试使用AsyncTask打包上传呼叫。这样,上传调用就会在不同的线程上进行,而不会干扰用户界面。

这种包装的一个(非常)简单的例子 -

class CloudinaryUpload extends AsyncTask<String, String, String> {


    protected String doInBackground(String... urls) {
        try{
            Map imageResult = cloudinary.uploader().upload("file", ObjectUtils.emptyMap());

        }catch (IOException e){
            System.out.println(e.getMessage());
        }
    }

    protected void onPostExecute(String url) {
          //do something with imageResult
    }
}