Я хочу загружать изображения со своего сервера, ничего не нажимая - когда мой php-файл запускается, он загружается автоматически, но проблема в том, что файл поврежден. Однако, когда я вставляю URL-адрес прямо в браузер и загружаю его, он работает отлично. Так почему моя реализация ниже не работает? Есть идеи по этому поводу?
Вот мой код:
$url_to_image = 'https://hideserver.com/axul-display/assets/ads/';
$ch = curl_init($url_to_image);
$my_save_dir = 'assets/ads/';
$filename = basename($url_to_image.'ads-id-4.gif');
$complete_save_loc = $my_save_dir . $filename;
$fp = fopen($complete_save_loc, 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, FALSE);
curl_exec($ch);
curl_close($ch);
fclose($fp);
@hanshenrik извините, я скрываю сервер, потому что это частный сервер, могу я отправить вам сервер в личку? Спасибо
хорошо, включите CURLOPT_VERBOSE и опубликуйте подробный журнал. запустите $out=fopen("php://output","wb");curl_setopt_array($ch,array(CURLOPT_VERBOSE=>1,CURLOPT_STDERR=>$out)); перед запуском curl_exec, что вы получите?
* Имя хоста server ***. Com был обнаружен в кеше DNS * Попытка 128.199. ***. *** ... * Подключен к серверу ***. Com (128.199. ***. ***) порт 80 ( # 0)> GET / axul-display / assets / ads / HTTP / 1.1 Хост: server ***. Com Принять: / <HTTP / 1.1 200 OK <Дата: среда, 21 ноября 2018 г. 22:49:17 GMT <Server : Apache / 2.4.29 (Ubuntu) <Vary: Accept-Encoding <Content-Length: 2854 <Content-Type: text / html; charset = UTF-8 <
@hanshenrik, могу ли я получить вашу электронную почту, чтобы я мог отправить вам электронное письмо на сервер, спасибо
конечно, моя электронная почта доступна на stackoverflow.com/users/1067003/hanshenrik?tab=profile
@henshenrik Я отправил вам приглашение на встречу, пожалуйста, посмотрите, спасибо.
@henshenrik, пожалуйста, посмотрите вашу электронную почту Я уже отправил имя сервера






Со ссылкой на ответ размещенный на php - Как заставить скачивать файл?
Вместо вызова curl используйте заголовки для загрузки файла.
$file_name = 'ads-id-4.gif';
$file_url = 'https://hideserver.com/axul-display/assets/ads/' .
$file_name;
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"".$file_name."\"");
readfile($file_url);
exit;
OP не пытается заставить php выводить изображение на стандартный вывод, OP пытается заставить php-скрипт сохранить изображение в системе, в которой работает php.
Всем привет, спасибо за вашу помощь, но я решил свою проблему вместо curl, я использовал этот очень простой код.
$ image_url = 'http: // сервер ***. com / axul-display / assets / ads / ads-id-4.gif';
file_put_contents('assets/ads/ads-id-4.gif', file_get_contents($image_url));
Всем большое спасибо!
Это сработало для меня ..
$ch = curl_init($url);
if (in_array($type, ['jpg', 'jpeg','png'])) {
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYSTATUS, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 400);
curl_setopt($ch, CURLOPT_FILE, fopen($temp_path, 'wb'));
curl_exec($ch);
$info = curl_getinfo($ch);
Я попытался подключиться из Норвегии, Швеции и Франции, сервер на
hideserver.com(52.73.179.54) отклоняет TCP-соединения через порт 443 (порт httpS по умолчанию). может ли кто-нибудь еще связаться с этим сервером?