php: // ввод напрямую в браузер - PullRequest
0 голосов
/ 04 февраля 2020

Подключил камеру ESP32 в качестве клиента. Загрузка Jpeg каждые 20se c на мой сервер.

Использование

$received=file_get_contents('php://input');
$fileToWrite = "name ".time().".jpg";
file_put_contents($fileToWrite, $received);

Я могу сохранять входящий Jpeg на моем сервере. Все персиковое

Нет способа напрямую отобразить входящий / загруженный JPEG в моем браузере. Не сохраняя изображение.

Я пытался

header('Content-Type: image/jpeg'); 
echo readfile($received);

с эхом и без него, я пытался base_64encoding, decoding, imagejpeg и imagecreatefromjpeg. Последний жалуется на то, что мне нужны реальные имя и папка, чтобы их использовать. Только с переменной, которая не будет работать ...

В зависимости от клиентской стороны я загружаю что-то, но в каждом случае это между 429 и 433 байтами. Браузер говорит, что «изображение не может быть отображено, потому что оно содержит ошибки». Это вывод монитора моего клиента:

HTTP_EVENT_ON_HEADER, key=Content-Length, value=429
12:48:11.663 -> HTTP_EVENT_ON_HEADER, key=Content-Type, value=image/jpeg
12:48:11.663 -> HTTP_EVENT_ON_DATA, len=377
12:48:11.696 -> HTTP_EVENT_ON_DATA, len=52
12:48:11.696 -> HTTP_EVENT_ON_FINISH
12:48:11.696 -> esp_http_client_get_status_code: 200
12:48:11.696 -> HTTP_EVENT_DISCONNECTED

При фактическом хранении изображения количество HTTP_EVENT_ON_DATA намного больше (уууууу), чем когда пытаюсь напрямую отобразить изображение в браузере.

Кто-нибудь знает, что я делаю не так?

1 Ответ

0 голосов
/ 05 февраля 2020

Это не то решение, которое я себе представлял, но я буду хранить изображение с тем же именем каждые 20 секунд c. как @Magnus Eriksson предложил.

Я также постараюсь хранить в кеше и «возиться» вокруг. К сожалению, предложенное решение @ udit-rawat не сработало.

Спасибо

...