Nu aber, so läuft es und zwar mit Sonderzeichen und ohne Zeilenumbrüche in |x| um,zuwandeln und später wieder herzustellen.
Java:
// Create a HashMap to store the key-value pairs
Map<String, String> data = new HashMap<>();
data.put("description", myDesc);
data.put("preis", myPreis);
data.put("konto", myKonto);
data.put("MwSt", myMwSt);
data.put("datum", myDatum);
data.put("filename", file.getName());
// Convert the HashMap to a JSON string
String jsonString = new Gson().toJson(data);
// Convert the JSON string to a RequestBody
RequestBody jsonRequestBody = RequestBody.create(MediaType.parse("application/json"), jsonString.getBytes());
// Now send the JSON string to the PHP file
RequestBody fileRequestBody = RequestBody.create(MediaType.parse("*/*"), file);
map.put("file\"; filename=\"" + file.getName() + "\"", fileRequestBody);
map.put("json", jsonRequestBody);
php:
if($_SERVER['REQUEST_METHOD'] === 'POST') {
if(isset($_POST['json'])) {
$jsonString = $_POST['json']; // JSON-String als Text aus dem Request-Body lesen
$jsonData = json_decode($jsonString,true); // JSON-String in ein PHP-Array umwandeln
// hier exception einbauen:
if(false === $jsonData) {
$success = false;
$message = "JSON-Error while uploading";
$response["success"] = $success;
$response["message"] = $message;
echo json_encode($response);
exit;
}
$myDateiname = $_FILES['file']['name'];
$myDateigroesse = $_FILES["file"]["size"];
$myDescription = $jsonData['description'];
$myDescription = utf8_decode($myDescription);
$myPreis = $jsonData['preis'];
$myKonto = $jsonData['konto'];
$myMwSt = $jsonData['MwSt'];
$myMwSt = str_replace("% MwSt","",$myMwSt);
$myDatum = datum2mysql($jsonData['datum'],'.');
$fp = fopen('./androidlog.txt', 'a+');
fwrite($fp, $_FILES['file']['name']."\r\n");
fwrite($fp, print_r($jsonData,true)."\r\n");
fclose($fp);
}
}
ergibt sowas hier:
IMAGE_20230420_083452.jpg
Array
(
[datum] => 20.04.2023
[preis] => 36.9
[konto] => GWG
[filename] => IMAGE_20230420_081552.jpg
[description] => Zeile 1
Zeile 2
und noch eine lange Zeile die einen Zeilenumbruch innerhalb der Textarea hat und in der nächsten Zeile ein paar Sonderzeichen
'*+&#@/)?;"
[MwSt] => 19% MwSt
)
Jochen