Передача файла с помощью CURL на прямую из массива $_FILES

182
21 марта 2019, 03:10

В контроллер методом POST приходит файл. Его нужно отправить на стороннее API используя CURL.

Сейчас у меня это реализовано так:

public function actionAddAttachment()
    {
        $attachmentFile = UploadedFile::getInstanceByName('attachment');
        if ($attachmentFile === null) {
            return ['success' => false, 'error' => 'File was not uploaded'];
        }
        $attachment = new Attachment(['fileResource' => $attachmentFile]);

        if ($attachment->upload()) {
            $result = Api::addAttachment($attachment);
            $attachment->unlink();
            return ['success' => $result === true];
        }
        return ['success' => false];
    }

Метод upload:

public function upload()
    {
        $this->fileName = $this->fileResource->baseName . '.' . $this->fileResource->extension;
        $this->path = 'attachments/' . $userToken . microtime() . '_' . $this->fileName;
        return $this->fileResource->saveAs($this->path);
    }

Запрос отсылается следующим образом:

$cfile = new \CURLFile(realpath($attachment->path));
$cfile->setPostFilename($attachment->fileName);
$data = ['file' => $cfile];
$curl_options = array(
    CURLOPT_URL => $url,
    CURLOPT_USERPWD => $pwd
    CURLOPT_VERBOSE => 1,
    CURLOPT_CUSTOMREQUEST => POST,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_SSL_VERIFYHOST => false,
    CURLINFO_HEADER_OUT => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 90,
    CURLOPT_POSTFIELDS => $data,
);

Получается каждый раз перед отправкой запроса, я сохраняю файл и после попытки отправки я его удаляю.
Я пробовал создавать CURLfile на основе данных массива $_FILES (tmpName, name, type) , но в этом случае не удается сделать запрос, CURL возвращает ошибку №26 - не удалось загрузить файл.

Как можно реализовать отправку файла напрямую из массива $_FILES без сохранения его в Attachments?

READ ALSO
Поиск процесса nginx

Поиск процесса nginx

Запущено много процессов с одного скрипта tradephp с разными параметрами Как проверить есть ли такой процесс по названию с нужными параметрами?...

154
Скачать файл и сделать редирект

Скачать файл и сделать редирект

Данный код работает, файл скачивается на ПКПосле этого я делаю редирект, который не отрабатывает

148
Вывод таблицы с файла excel на страницу посредством php

Вывод таблицы с файла excel на страницу посредством php

У кого есть опыт пользования php+excel? Необходимо на странице выводить таблицу с файлаЕсть обязательные условия: - необходимо сохранять форматирование...

162
Общий текстовой чат на php

Общий текстовой чат на php

Пишу чат на php, при попытке залогиниться, в сессию записывается user_id, после успешной попытки, появляется страница чата, где написаны все сообщения(тк...

156