Wir haben API, die Bilder in Base64 String konvertiert empfängt. Unsere mobile Anwendung verbraucht während des Konvertierungsprozesses zu viel RAM (nach base64), jetzt müssen wir das Image als Multipart hochladen. Ich habe den mobilen Teil entwickelt, aber ich stecke mit der PHP API fest. Wir haben von Volley zu Retrofit gewechselt, weil Volley keinen mehrteiligen Upload unterstützt.So erhalten Sie eine Multipart-Anfrage in PHP
Was muss ich im Skript ändern, das den Upload des mehrteiligen Bildes empfängt?
<?php
//header('Content-Type : bitmap; charset=utf-8');
//header('Content-Type: application/json');
if (isset($_POST["encoded_string"])) {
//encoded_string -> base64 string sent from mobile phone
$encoded_string = $_POST["encoded_string"];
$image_name = $_POST["image_name"];
$decoded_string = base64_decode($encoded_string);
$path = 'images/' . $image_name;
if (!file_exists('images')) {
mkdir('images', 0777, true);
}
$file = fopen($path, 'wb');
$is_written = fwrite($file, $decoded_string);
fclose($file);
if ($is_written > 0) {
$connection = mysqli_connect('localhost', 'root', '', 'test');
if ($connection) {
$query = "INSERT INTO photos(name,path) values('$image_name','$path');";
$result = mysqli_query($connection, $query);
if ($result) {
echo json_encode(array(
"response" => "Success! Image is succefully uploaded!.",
"result" => "success"
));
} else {
echo json_encode(array(
"response" => "Error! Image is not uploaded.",
"result" => "error"
));
}
mysqli_close($connection);
} else {
echo json_encode(array(
"response" => "Error! No database connection!",
"result" => "error"
));
}
}
} else {
echo json_encode(array(
"response" => "Error! Please insert data!",
"result" => "error"
));
}
?>
Ich habe benutzerdefinierte Methoden [http://stackoverflow.com/questions/36513174/android-multipart-image-upload-with-httpconnectionparams-deprecated-in-new-api/36513504#36513504) für Upload-Bilder es funktioniert vielleicht von Json dir helfen. –
Bitte entfernen Sie den Datenbankcode aus Ihrem Skript. Es hat nichts mit dem Empfang eines Bildes zu tun. Konzentriere dich auf den Empfang. Halte das Skript klein. – greenapps