Невозможно конвертировать PDF или DOCX файл в Base64 в Android - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь сначала выбрать файл PDF или docx из памяти, затем закодировать Base64 String и сохранить в базе данных mysql.Когда я нажимаю на кнопку загрузки, это не работает.Я думаю, что была проблема в кодировании, но я не могу решить эту проблему.Как решить эту проблему или есть ли способ решить эту проблему ??

Ниже мой код

public void onActivityResult(int requestCode, int resultCode, Intent data) {
          if (resultCode == RESULT_OK) {
               Uri uri = data.getData();
               assert uri != null;
               String uriString = uri.toString();
               file = new File(uriString);
               filepath = file.getAbsolutePath();
               String displayName ;
               if(uriString.startsWith("content://"))
               {
                    Cursor cursor = null;
                    try {
                         cursor = this.getContentResolver().query(uri,null,null,null,null);
                         if(cursor!=null&&cursor.moveToFirst())
                         {
                              displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
                              Log.d("name",displayName);
                         }
                    }finally {
                         assert cursor != null;
                         cursor.close();
                    }
               }else if(uriString.startsWith("file://"))
               {
                    displayName = file.getName();
                    Log.d("name",displayName);
               }
          }
     }

     public static String convertFileToByteArray(File f) {
          byte[] byteArray = null;
          try {
               InputStream inputStream = new FileInputStream(f);
               ByteArrayOutputStream bos = new ByteArrayOutputStream();
               byte[] b = new byte[1024 * 11];
               int bytesRead;

               while ((bytesRead = inputStream.read(b)) != -1) {
                    bos.write(b, 0, bytesRead);
               }

               byteArray = bos.toByteArray();

          } catch (IOException e) {
               e.printStackTrace();
          }
          return Base64.encodeToString(byteArray, Base64.NO_WRAP);
     }

1 Ответ

0 голосов
/ 19 сентября 2018

Отступ таким образом

  public void getDoc() {

    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("application/pdf");
    startActivityForResult(intent, 1);


}



 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 1 && resultCode == RESULT_OK && data != null) {


        Uri selectedImage = data.getData();


        try {

                InputStream iStream = getContentResolver().openInputStream(selectedImage);
                byte[] inputData = getBytes(iStream);

                long fileSizeInBytes = inputData.length;
                long fileSizeInKB = fileSizeInBytes / 1024;
                long fileSizeInMB = fileSizeInKB / 1024;

                    ParseFile resumes  = new ParseFile("image.pdf", 
                          inputData);

        } catch (IOException e) {
            e.printStackTrace();

        }

    }
}

 public byte[] getBytes(InputStream inputStream) throws IOException {
    ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
    int bufferSize = 1024;
    byte[] buffer = new byte[bufferSize];

    int len = 0;
    while ((len = inputStream.read(buffer)) != -1) {
        byteBuffer.write(buffer, 0, len);
    }
    return byteBuffer.toByteArray();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...