web-dev-qa-db-fra.com

Comment convertir un fichier à base64?

Ici le rapport contient le chemin (chemin dans sdcard au format chaîne)

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

dans la ligne codée byte [] obtenant cette erreur. La méthode encodeBase64 (byte []) n'est pas définie pour le type Base64.

10
zyonneo
String value = Base64.encodeToString(bytes, Base64.DEFAULT);

Mais vous pouvez le convertir directement en String. Espérons que cela fonctionnera pour vous.

8
Sajith Vijesekara

Une version mise à jour, plus efficace, de Kotlin, qui contourne les bitmaps et ne stocke pas la totalité de ByteArray en mémoire (risque d'erreur de MOO).

fun convertImageFileToBase64(imageFile: File): String {
    return FileInputStream(imageFile).use { inputStream ->
        ByteArrayOutputStream().use { outputStream ->
            Base64OutputStream(outputStream, Base64.DEFAULT).use { base64FilterStream ->
                inputStream.copyTo(base64FilterStream)
                base64FilterStream.flush()
                outputStream.toString()
            }
        }
    }
}
3
Carson Holzheimer

Je crois que ces deux exemples de codes aideront au moins une personne de la même manière que beaucoup m'ont aidé par le biais de cette plate-forme. Merci à 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;
    }

Je serai heureux de répondre à toute question concernant ces codes.

3
Edwinfad
 //Convert Any file, image or video or txt  into base64

 1.Import the below Dependancy
 compile 'commons-io:commons-io:2.4'

 2.Use below Code to convert file to base64
 File file = new File(filePath);  //file Path
 byte[] b = new byte[(int) file.length()];
 try {
 FileInputStream fileInputStream = new FileInputStream(file);
 fileInputStream.read(b);
 for (int j = 0; j < b.length; j++) {
 System.out.print((char) b[j]);
 }
 } catch (FileNotFoundException e) {
 System.out.println("File Not Found.");
 e.printStackTrace();
 } catch (IOException e1) {
 System.out.println("Error Reading The File.");
 e1.printStackTrace();
  }

 byte[] byteFileArray = new byte[0];
   try {
   byteFileArray = FileUtils.readFileToByteArray(file);
   } catch (IOException e) {
            e.printStackTrace();
   }

  String base64String = "";
  if (byteFileArray.length > 0) {
  base64String = Android.util.Base64.encodeToString(byteFileArray, Android.util.Base64.NO_WRAP);
  Log.i("File Base64 string", "IMAGE PARSE ==>" + base64String);
        }
1
Ramesh sambu

Pour convertir un fichier en Base64:

File imgFile = new File(filePath);
if (imgFile.exists() && imgFile.length() > 0) {
    Bitmap bm = BitmapFactory.decodeFile(filePath);
    ByteArrayOutputStream bOut = new ByteArrayOutputStream();
    bm.compress(Bitmap.CompressFormat.JPEG, 100, bOut);
    String base64Image = Base64.encodeToString(bOut.toByteArray(), Base64.DEFAULT);
}
1
instanceof

Vous pouvez essayer ça.

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
...
byte[] byteArray = byteArrayOutputStream.toByteArray();
base64Value = Base64.encodeToString(byteArray, Base64.DEFAULT);
0
vishalk