Hi,
meine App kann bisher Sprachmemos in 3gp aufzeichnen und diese werden in eine Datenbank als BLOB gespeichert. Die Entwicklungsumgebung ist Android Studio und als Datenbank verwende ich MySQL.
Als erstes wird die temporär-gespeicherte Datei nach der Tonaufnahme in ein byte[]-Array umgewandelt.
Das Byte wird in BASE64 umgewandelt.
Und auf der PHP-Seite wird BASE64 wieder dekodiert.
Zuletzt wird das alles in ein BLOB-Field eingespeichert.
Die Daten sind dann zwar drin, allerdings ist die Datei, die ich vom BLOB ziehe, unbrauchbar. Hat jemand ne Ahnung, warum? Oder ob an der ganzen Kodierungssache was falsch ist?
meine App kann bisher Sprachmemos in 3gp aufzeichnen und diese werden in eine Datenbank als BLOB gespeichert. Die Entwicklungsumgebung ist Android Studio und als Datenbank verwende ich MySQL.
Als erstes wird die temporär-gespeicherte Datei nach der Tonaufnahme in ein byte[]-Array umgewandelt.
Java:
private byte[] convertFileIntoByteArray(File file) throws Exception {
byte[] byteData = new byte[(int) file.length()];
FileInputStream fileInputStream = new FileInputStream(file.getAbsolutePath());
DataInputStream dataInputStream = new DataInputStream(fileInputStream);
dataInputStream.readFully(byteData);
dataInputStream.close();
fileInputStream.close();
return byteData;
}
Das Byte wird in BASE64 umgewandelt.
Java:
encoded_bytes = Base64.encodeToString(binaryData, 0);
url_encoded_bytes = URLEncoder.encode(encoded_bytes, "UTF-8");
Und auf der PHP-Seite wird BASE64 wieder dekodiert.
PHP:
$base64OfMedia = base64_decode(urldecode($_POST["mediaFile"]));
Zuletzt wird das alles in ein BLOB-Field eingespeichert.
Die Daten sind dann zwar drin, allerdings ist die Datei, die ich vom BLOB ziehe, unbrauchbar. Hat jemand ne Ahnung, warum? Oder ob an der ganzen Kodierungssache was falsch ist?