Не удалось записать результат запроса в файл (с помощью curl)
Я пытаюсь получить файл с 3-d стороннего сервера, используя \Magento\Framework\HTTP\Адаптер\Curl в моей модели. Моя цель - записать этот файл в файл на моем сервере внутри magento. Дело в том, что запрос проходит успешно, я получаю ответ, но файл создается пустым (файл с нулевым байтом), и в нем ничего не записано. Вот пример моего кода:
/**
* @var \Magento\Framework\Filesystem\Directory\Write
* @var \Magento\Framework\HTTP\Adapter\Curl
* @var string $destination
* @var string $source
*/
$newFile = $this->_directory->getDriver()->fileOpen($destination, "wb");
$this->_curl->addOption(CURLOPT_FILE, $newFile);
$this->_curl->write(\Zend_Http_Client::GET, $source);
$result = $this->_curl->read();
В результате у меня есть полный ответ в $result
, пустой файл в $destination
. Достаточно разрешения, т. е. даже установка 777 в каталоге и текущем файле, результат не меняется.
drwxrwxrwx 3 501 www-data 102 Apr 5 08:56 .
drwxrwxrwx 3 501 www-data 102 Apr 5 08:10 ..
-rw-rw-rw- 1 501 www-data 0 Apr 5 08:59 file_temp.gz
1
Author: Siarhey Uchukhlebau, 2016-04-05
1 answers
Попробуйте получить файл с помощью Magento\Framework\HTTP\ZendClient
вот так. ZendClientFactory
создаст экземпляр класса Magento\Framework\HTTP\ZendClient
:
/**
* @var \Magento\Framework\HTTP\ZendClientFactory
* @var string $url
*/
$client = $this->_httpClientFactory->create();
$client->setUri($url);
$client->setConfig(['maxredirects' => 0, 'timeout' => 30]);
$result = $client->request(\Zend_Http_Client::GET)->getBody();
2
Author: Miroslav Petroff, 2017-05-11 12:12:06