Search code examples
androidbase64documentdocxdoc

Convert docx, doc to base64 android


I am trying to get the docx file as shown below

 public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == MainActivity.RESULT_OK) {

        if (resultCode == RESULT_OK) {
            // Get the Uri of the selected file
            Uri uri = data.getData();
            String uriString = uri.toString();
            File myFile = new File(uriString);
            String path = myFile.getAbsolutePath();
            filepath =path;
            String displayName = null;

            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));
                        txtFilename.setText(displayName);
                        filename = displayName;

                    }
                } finally {
                    cursor.close();
                }
            } else if (uriString.startsWith("file://")) {
                displayName = myFile.getName();
                txtFilename.setText(displayName);
                filename = displayName;

            }
        }
    }
    }

Now the result is :

Path: /content:/com.estrongs.files/storage/emulated/0/Download/Imp%20Values.docx

Filename: Imp Values.docx

Now how do I convert this document to base64 ?

Thanks in advance.


Solution

  • Try this, Hope it will work, I did for .pdf and .doc

    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 = 0;
    
            while ((bytesRead = inputStream.read(b)) != -1) {
                bos.write(b, 0, bytesRead);
            }
    
            byteArray = bos.toByteArray();
    
            Log.e("Byte array", ">" + byteArray);
    
        } catch (IOException e) {
            e.printStackTrace();
        }
        return Base64.encodeToString(byteArray, Base64.NO_WRAP);
    }
    

    For picking file :

    private void chooseFile() {
        try {
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.addCategory(Intent.CATEGORY_OPENABLE);
            intent.setType("*/*");
            try {
                startActivityForResult(intent, LOAD_IMAGE_RESULTS);
    
            } catch (ActivityNotFoundException e) {
    
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    
    }