2016-03-20 3 views
0

Я пытаюсь загрузить файл в формате pdf с мобильного телефона android на сервер. Я попытался с изображением, он отлично работает с изображением. но при попытке загрузить файл pdf он дает мне ошибку.Загрузка pdf на сервер с android

Я использую затмение API 18

Я попытался это: В списке Элемент выберите он открывает файл эксплорер

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    // TODO Auto-generated method stub 
    super.onListItemClick(l, v, position, id); 
    int sub=subid.get(position); 
    Toast.makeText(getApplicationContext(),Integer.toString(sub),Toast.LENGTH_LONG).show(); 
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("application/pdf"); 
    startActivityForResult(intent, 1); 

} 
@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 


     // TODO Auto-generated method stub 
     //super.onActivityResult(requestCode, resultCode, data); 
     String filepath; 
     if (resultCode==RESULT_OK) { 
      filepath=getRealPathFromURI_API11to18(UploadAssignment.this, data.getData()); 
      System.out.println("File "+filepath); 

     } 


     //new Upload(UploadAssignment.this, namepath,Integer.toString(prn),sname,Integer.toString(sub)).execute(); 
    // } 
    } 


public static String getRealPathFromURI_API11to18(Context context, Uri contentUri) { 
     String[] proj = { MediaStore.Images.Media.DATA }; 
     String result = null; 

     CursorLoader cursorLoader = new CursorLoader(
       context, 
      contentUri, proj, null, null, null);   
     Cursor cursor = cursorLoader.loadInBackground(); 

     if(cursor != null){ 
     int column_index = 
      cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
     cursor.moveToFirst(); 
     result = cursor.getString(column_index); 
     } 
     return result; 
    } 

здесь getRealPathFromURI_API11to18() метод возвращает меня нуль. Я не знаю, почему он дает мне нулевое значение.

+0

Это Контант убедитесь, что вы просматриваете только файлы изображений. Пользователь MediaStore.Images.Media.DATA MediaStore.Files для просмотра pdf-файлов –

+0

@Honza Musil Что мы должны использовать для загрузки pdf. файлы. –

ответ

1

Вы передаете заданный тип "application/pdf" на намерение и после получения URI вы пытаетесь получить RealPath с использованием MediaStore.Images.Media.DATA, который используется для получения только для изображений. Это не позволит прочитать путь из URI для вашего файла pdf. Вы могли бы попробовать что-то, как показано ниже:

try{ 

     /*Used if you want to upload file object*/ 
     File mFile = new File(new URI(mNewPath)); 

     /*Used if you want to read absolute path of that specific file*/ 
     String mPath = mFile.getAbsolutePath(); 

    }catch (Exception e){ 

    } 
+0

Спасибо за ваш ответ, я устал, это дает мне ошибку: java.net.URISyntaxException: Недопустимый символ в пути по индексу 42:/document/3565-3161: OnlineStatementOfMarks (1) .pdf Я также напечатал uri path которые показывают мне на logcat: content: //com.android.externalstorage.documents/document/3565-3161%3AOnlineStatementOfMarks%20 (1) .pdf –

+0

03-20 16: 27: 58.754: I/System.out (24744) : Excp java.lang.IllegalArgumentException: URI не является абсолютным:% 2Fdocument% 2F3565-3161% 3AOnlineStatementOfMarks +% 281% 29.pdf –

+0

Я не могу получить .replaceAll ("% 20", ""); на моем uri –

Смежные вопросы