2016-07-27 5 views
0

私は簡単なアンドロイド写真アップローダを開発しています。私はギャラリー活動をしています。そこでは写真を選択できます。その後、私はそれらを表示する必要があるため、パスでイメージ名を送信しています。文字列を画像ファイルに変換する方法

これらの名前からファイルを作成してアップロードの実際のイメージを指し示すにはどうすればよいですか?

String[] picturesWithPath = new String[arrPath.size()]; 
    for (int z = 0; z < arrPath.size(); z++) 
    { 
     picturesWithPath[z] = arrPath.get(z); 

     Log.i("data","with path: "+picturesWithPath[z]); 
    } 
+0

名前のファイルを作成することはできません。あなたがアップロードしたいものは非常に不明です。ファイル名?ファイル?最初にあなたの意図を明確にしてください。 – greenapps

+0

ファイルをアップロードします。その前に、私はファイルMD5チェックサムをサーバーでチェックする必要があります。私がこのようにすることができない場合、私はどのようにアプローチするのですか? – Janos

+1

これは非常に異なる問題のようです。あなたは最初に名前とパスについて話しました。あなたのポストにmd5コードはありません。さらに、デバイス上のファイルのmd5チェックサムを決定した場合、ファイルをアップロードする前にサーバがそれを確認する方法は?あなたの投稿を編集し、あなたが望むものについての良い話を書いてください。コメントを使わないでください。 – greenapps

答えて

0
  • GETファイルURLの怒鳴るのコードを使用してください。

    //use this in yorr for loop 
        picturesWithPath[z] = getPath(Yourclass.this, arrPath.get(z)); 
    
    
    
    public static String getPath(final Context context, final Uri uri) { 
    
    // check here to KITKAT or new version 
    final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; 
    
    // DocumentProvider 
    if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { 
    
        // ExternalStorageProvider 
        if (isExternalStorageDocument(uri)) { 
         final String docId = DocumentsContract.getDocumentId(uri); 
         final String[] split = docId.split(":"); 
         final String type = split[0]; 
    
         if ("primary".equalsIgnoreCase(type)) { 
          return Environment.getExternalStorageDirectory() + "/" 
            + split[1]; 
         } 
        } 
        // DownloadsProvider 
        else if (isDownloadsDocument(uri)) { 
    
         final String id = DocumentsContract.getDocumentId(uri); 
         final Uri contentUri = ContentUris.withAppendedId(
           Uri.parse("content://downloads/public_downloads"), 
           Long.valueOf(id)); 
    
         return getDataColumn(context, contentUri, null, null); 
        } 
        // MediaProvider 
        else if (isMediaDocument(uri)) { 
         final String docId = DocumentsContract.getDocumentId(uri); 
         final String[] split = docId.split(":"); 
         final String type = split[0]; 
    
         Uri contentUri = null; 
         if ("image".equals(type)) { 
          contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 
         } else if ("video".equals(type)) { 
          contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; 
         } else if ("audio".equals(type)) { 
          contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
         } 
    
         final String selection = "_id=?"; 
         final String[] selectionArgs = new String[] { split[1] }; 
    
         return getDataColumn(context, contentUri, selection, 
           selectionArgs); 
        } 
    } 
    // MediaStore (and general) 
    else if ("content".equalsIgnoreCase(uri.getScheme())) { 
    
        // Return the remote address 
        if (isGooglePhotosUri(uri)) 
         return uri.getLastPathSegment(); 
    
        return getDataColumn(context, uri, null, null); 
    } 
    // File 
    else if ("file".equalsIgnoreCase(uri.getScheme())) { 
        return uri.getPath(); 
    } 
    
    return null; 
    } 
    public static String getDataColumn(Context context, Uri uri, 
               String selection, String[] selectionArgs) { 
    Cursor cursor = null; 
    final String column = "_data"; 
    final String[] projection = { column }; 
    
    try { 
        cursor = context.getContentResolver().query(uri, projection, 
          selection, selectionArgs, null); 
        if (cursor != null && cursor.moveToFirst()) { 
         final int index = cursor.getColumnIndexOrThrow(column); 
         return cursor.getString(index); 
        } 
    } finally { 
        if (cursor != null) 
         cursor.close(); 
    } 
    return null; 
    } 
    public static boolean isExternalStorageDocument(Uri uri) { 
    return "com.android.externalstorage.documents".equals(uri 
         .getAuthority()); 
    } 
    public static boolean isDownloadsDocument(Uri uri) { 
    return "com.android.providers.downloads.documents".equals(uri 
         .getAuthority()); 
    } 
    public static boolean isMediaDocument(Uri uri) { 
    return "com.android.providers.media.documents".equals(uri 
         .getAuthority()); 
    
    public static boolean isGooglePhotosUri(Uri uri) { 
    return "com.google.android.apps.photos.content".equals(uri 
         .getAuthority()); 
    } 
    
+0

ありがとうございますが、私は既にstorage/emulated/0/Download/download.jpgのような名前のファイルパスを持っています。今私は彼らからファイルを作る必要があります。どうやってするか? – Janos

+0

これは、このパスを使って画像ビューに画像を表示することを意味します。 –

+0

画像を表示する必要はありません。サーバーにアップロードできるようにFILEオブジェクトを作成したいだけです。 – Janos

関連する問題