2017-03-14 10 views
3

基本的に私がしたいのはギャラリーから画像を選んで同じ画像を私のCloudinアカウントにアップロードすることです、私はCloudinaryの文書を見ましたが、どういう仕組みか分かりません私のコードでそれを実装する。ここでアンドロイドからCloudineに画像をアップロードするには?

は、私は、誰かがそれを必要とする場合に情報を得たのリンクが...ある https://github.com/cloudinary/cloudinary_java/tree/master/cloudinary-android

そして、これは...私がこれまで持っているもの

upload_image.class

です

public class edit_profile_activity extends AppCompatActivity { private static int RESULT_LOAD_IMG = 1; String imgDecodableString; public void loadImagefromGallery(View view) { Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(galleryIntent, RESULT_LOAD_IMG); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); try { if (requestCode == RESULT_LOAD_IMG && resultCode == RESULT_OK && null != data) { Uri selectedImage = data.getData(); String[] filePathColumn = { MediaStore.Images.Media.DATA }; Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); imgDecodableString = cursor.getString(columnIndex); cursor.close(); ImageView imgView = (ImageView) findViewById(R.id.circleImageView); imgView.setImageBitmap(BitmapFactory.decodeFile(imgDecodableString)); } else { Toast.makeText(this, "You haven't picked Image",Toast.LENGTH_LONG).show(); } } catch (Exception e) { Toast.makeText(this, "Something went wrong", Toast.LENGTH_LONG) .show(); } } } 

助けていただければ幸いです。

+0

は、ドキュメントを読んで彼らは明確に述べている –

+0

@jitesh mohite私はすでにそのコードを実装しようとしましたが、動作しません:/ –

+0

どのようなエラーがそれを与える –

答えて

0

この簡単なアップロードCloudinaryのためのNG機能:

Cloudinary cloudinary = new Cloudinary(Constants.CLOUDINARY_URL); 
    try { 
     FileInputStream is = new FileInputStream(new File(filePath)); 
     Uploader uploader = cloudinary.uploader(); 
     Map map = uploader.upload(is, new HashMap()); 
     return map; 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

更なる説明はここにある:The order is like this: Take picture->save to file->upload to cloudinary

0

は、これは私がそれを行う方法です。

ギャラリーの意図は、私はそれを使用し、私の地元に画像を保存するのContentProviderのURIを返します。 (app/local)ディレクトリに移動します。

これを言うことができます:

String local_uri = new SaveImageAsyncTask(cropImageView, 
           uri).execute().get(); 

その後、私はcloudinaryに画像をアップロードするには、このURIを使用します。

private void checkInternetAndUploadImage(final String uri) { 
     if (Validator.isOnline(this)) { 
      new UploadAsyncTask().execute(Uri.parse(uri)); 
     } 
    } 

私のdoInBackgroundは、このコードを持っている:

Map profilePicture = ObjectUtils.asMap("public_id", PreferencesManager.getInstance().getUserId() + 
          "/" + PreferencesManager.getInstance().getUserName() + "_PROFILE_PICTURE"); 
        profilePicture.put("uploadPrefix", "http://api.cloudinary.com"); 
        profilePicture.put("timestamp", System.currentTimeMillis()/1000); 
        Map imageUploadResult = CloudinaryManager.getInstance(Activity_ImageViewer.this).uploader(). 
          upload(new File(voids[0].getPath()), 
            profilePicture); 

        if (imageUploadResult.containsKey("url") /*&& backUploadResult.containsKey("url")*/) { 
         PreferencesManager.getInstance().setUSER_PROFILE_PICTURE_URL(String.valueOf(imageUploadResult.get("url"))); 
         //PreferencesManager.getInstance().setUserBackAssetUrl(String.valueOf(backUploadResult.get("url"))); 
         result = true; 
        }