如何将文件转换为Base64?

zyo*_*neo 14 base64 android

此处报告包含路径(sdcard中的路径名,以字符串格式)

File dir = Environment.getExternalStorageDirectory();
File yourFile = new File(dir, report);
String encodeFileToBase64Binary = encodeFileToBase64Binary(yourFile);

private static String encodeFileToBase64Binary(File fileName) throws IOException {
    byte[] bytes = loadFile(fileName);
    byte[] encoded = Base64.encodeBase64(bytes);

    String encodedString = new String(encoded);
    return encodedString;
}
Run Code Online (Sandbox Code Playgroud)

在byte []编码行中得到此错误.对于Base64类型,方法encodeBase64(byte [])是未定义的

Saj*_*ara 11

String value = Base64.encodeToString(bytes, Base64.DEFAULT);
Run Code Online (Sandbox Code Playgroud)

但你可以直接将它转换为String.希望这对你有用.


Car*_*mer 7

Kotlin是一种更新的,更有效的版本,它绕过了位图,并且不将整个ByteArray存储在内存中(存在OOM错误)。

fun convertImageFileToBase64(imageFile: File): String {
    return FileInputStream(imageFile).use { inputStream ->
        ByteArrayOutputStream().use { outputStream ->
            Base64OutputStream(outputStream, Base64.DEFAULT).use { base64FilterStream ->
                inputStream.copyTo(base64FilterStream)
                base64FilterStream.close() // This line is required, see comments
                outputStream.toString()
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Edw*_*fad 5

我相信这 2 个示例代码至少会像许多人通过这个平台帮助我一样帮助某人。感谢 StackOverflow。

// Converting Bitmap image to Base64.encode String type
    public String getStringImage(Bitmap bmp) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        byte[] imageBytes = baos.toByteArray();
        String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
        return encodedImage;
}
    // Converting File to Base64.encode String type using Method
    public String getStringFile(File f) {
        InputStream inputStream = null; 
        String encodedFile= "", lastVal;
        try {
            inputStream = new FileInputStream(f.getAbsolutePath());

        byte[] buffer = new byte[10240];//specify the size to allow
        int bytesRead;
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        Base64OutputStream output64 = new Base64OutputStream(output, Base64.DEFAULT);

            while ((bytesRead = inputStream.read(buffer)) != -1) {
                output64.write(buffer, 0, bytesRead);
            }
        output64.close();
        encodedFile =  output.toString();
        } 
         catch (FileNotFoundException e1 ) {
                e1.printStackTrace();
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        lastVal = encodedFile;
        return lastVal;
    }
Run Code Online (Sandbox Code Playgroud)

我很乐意回答有关这些代码的任何问题。