无法上传图片 Cloudinary - Android

Cannot upload image Cloudinary - Android

我无法将 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();
            }
}

上传调用需要服务器通信。 Android 不允许它在主 (UI) 线程上发生。 您可以尝试使用 AsyncTask 包装上传调用。这样,上传调用发生在不同的线程上,不会干扰 UI.

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

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
    }
}