我无法上传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();
}
}
答案 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
}
}