2016-07-27 3 views
0

나는 간단한 Android 사진 업 로더를 개발 중입니다. 갤러리 활동이 있는데 거기에서 사진을 선택할 수 있습니다. 그 후에 이미지 이름을 표시해야하므로 경로와 함께 이미지 이름을 보냅니다.문자열을 이미지 파일로 변환하는 방법

파일 이름을 지정하지 않고 업로드 할 실제 이미지를 가리키는 방법은 무엇입니까? GET 파일 URL에 대한

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
  • 사용 울부 짖는 코드입니다.

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

고마워,하지만 이미 저장 경로/에뮬레이트/0/다운로드/download.jpg 같은 파일 경로가 있습니다. 이제 파일을 만들어야합니다. 그렇게하는 방법? – Janos

+0

이 경로를 사용하여 이미지 뷰에 이미지를 표시 함을 의미합니다. –

+0

이미지를 표시 할 필요가 없습니다. 서버에 업로드 할 수 있도록 FILE 개체를 만들고 싶습니다. – Janos

관련 문제