@accountnujen

Можно ли отправить в CURLfile только что полученный файл, не записывая его на диск?

Делаю запрос на камеру, которая возвращает мне скриншот и я записываю его на диск
file_put_contents("screenshot.jpg", $res);
полученный скриншот мне нужно отправить телеграм. делаю я это вот так:
tlgrm("sendPhoto",['photo'=>new CURLFile("screenshot.jpg")]);

так как скриншот мне на сервере не нужен - я его удаляю через unlink.

Можно ли опустить момент с записью файла на диск и сразу отправить его в телеграм?
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
В PHP 8.1 появится нативный класс для этого CURLStringFile
https://www.php.net/manual/ru/migration81.new-feat...

Для версии PHP < 8.1 можете использовать полифилл
if(!class_exists('CURLStringFile')) {

class CURLStringFile extends CURLFile {
    public function __construct(string $data, string $postname, string $mime = "application/octet-stream") {
        $this->name     = 'data://'. $mime .';base64,' . base64_encode($data);
        $this->mime     = $mime;
        $this->postname = $postname;
    }
}

}

$jpg_curlfile = new \CURLStringFile($res, 'screenshot.jpg', 'image/jpeg');

$ch = curl_init('http://example.com/upload.php');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, ['file' => $jpg_curlfile]);
curl_exec($ch);


2. Можно полностью эмулировать Multipart/form-data и вручную расставлять boundry и тд
3. Можно использовать временные файлы функцией tmpfile() и тогда файл сам удалится при завершении скрипта (кроме аварийных случаев завершения)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы