Я пишу приложение, которое позволит пользователю делать снимки, которые автоматически отправляются на HTTP-сервер для классификации через HTTP POST multipart / form-data.Для создания и отправки этих запросов я использую библиотеку Apache HTTPClient.Я несколько уверен в том, что мой клиентский код на Java работает, так как я протестировал одну из конечных точек API Imgur и правильно загрузил изображения;поэтому, я думаю, что наиболее вероятно, что есть ошибка в конечной точке на моем сервере.Я отправляю запрос на сервер для получения сценария PHP, который я написал для получения файла, сохранения его в каталоге на сервере и отправки ответа клиенту соответствующим образом.Когда я проверяю это, сервер всегда отправляет ответ с кодом состояния 200, даже если скрипт явно не работает.Я попытался вручную установить код состояния ответа 500, чтобы принудительно вызвать код ошибки, и даже это не работает, что заставляет меня думать, что весь сценарий даже не запускается, когда запрос достигает конечной точки (если он даже достигает конечной точки)).Я ожидаю, что это будет либо ошибка в конфигурации сервера, либо ошибка в самом скрипте.Тем не менее, я вставил код Java на всякий случай.Там вы также можете найти некоторые ошибки.Я не очень хорошо разбираюсь в сетях или в PHP, поэтому могу определенно использовать более опытные глаза.
- Примечание: я знаю, что мой PHP-код выглядит ужасно.Вы, вероятно, найдете много плохих практик;извините.
Код моего сервера:
<?php
$path = '/home/user01/Documents/uploaded_images/';
$ext = '.jpg';
function getFileName() {
return 'image_'.date('Y-m-d_His');
}
//Receive the data from android client
$file = $_FILES['uploadedFile'];
//process the data
$filename = $path . getFileName() . '_' . $_SERVER['REMOTE_ADDR'] . $ext;
if (!is_uploaded_file($file['tmp_name']) ||
!copy($file['tmp_name'], $filename))
{
$message = 'Could not save file as' . $filename;
$error = True;
}
else {
$message = "Image uploaded successfully!";
$error = False;
}
//return response to the server
if ($error) {
http_response_code(500);
}
echo json_encode(
array(
'status' => 'Repsonse Code :' . http_response_code(),
'message' => $message
), JSON_FORCE_OBJECT);
?>