coder coder - 1 month ago 23
Android Question

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.

Answer

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();
    }

}