У меня в настоящее время есть некоторые проблемы с "REST API", который я написал для коллеги.У нас есть приложение, которое используется для загрузки изображений.Чтобы загрузить эти изображения на веб-сервер, я создал файл, который обрабатывает запрос POST с изображением в кодировке base64.
$request = http_build_query($_POST);
$size = strlen($request);
sc_log_add("imageupload","Size: $size"); //creates Log entry in Scriptcase
ini_set('display_errors', 'Off');
if(isset($_POST['image'])&&isset($_POST['path'])){
$path = $_POST['path'];
sc_log_add("imageupload","Datei: ".$path);
$_POST['image'] = str_replace(" ","+",$_POST['image']);
$exif = @exif_read_data('data://image/jpeg;base64,' . substr($_POST['image'], 0, 30000));
$orientation = ($exif)?$exif['Orientation']:1;
sc_log_add("imageupload","Orientation: $orientation");
$img = imagecreatefromstring(base64_decode($_POST['image']));
if($img != false){
//Create folder if not exists
$ordner = strstr($path, '/', true);
$mkdir = execute('../files','mkdir -p '.$ordner);
//Turn images based on orientation
if($orientation==3){$deg=180;} else if($orientation==6){$deg=270;} else if($orientation==8){$deg=90;} else {$deg = 0;}
$img = imagerotate($img, $deg, 0);
sc_log_add("imageupload","Image turned by $deg degrees");
//Resize image
$currwidth = imagesx($img);
if($currwidth>1200){
$img = imagescale ($img, 1200);
}
//Save image
imagejpeg($img, '../files/'.$path);
if(file_exists("../files/".$path)){ //Checks if file exists
$output= "11-OKAY";
sc_log_add("imageupload","11-OKAY");
} else {
$output= "17-File not generated: ".$fileexists." path:".$path;
sc_log_add("imageupload","17-File not generated");
}
} else {
$output= "23-Image Creation Error";
sc_log_add("imageupload","23-Image Creation Error");
}
} else {
$output= "1 - Missing Parameters";
$empty = (!isset($_POST['image']))?"Image empty":"";
$empty .= (!isset($_POST['path']))?"- path empty":"";
sc_log_add("imageupload","1 - Missing Parameters - ".$empty);
}
echo "##IUSTART##".$output."##IUEND##";
Этот сценарий работает, вероятно, в 95% случаев, но иногда имеет проблемы.Я также получаю проблемы на некоторых устройствах чаще, чем на других.
Любое предложение ПОЧЕМУ это происходит и что я (или мой коллега, который отправляет запросы в приложение) может или должен изменить?