Как скачать файл по ссылке php
Перейти к содержимому

Как скачать файл по ссылке php

  • автор:

скачивание файла по ссылке

То есть прямая ссылка к файлу, при нажатии нужно файл скачивать,а не открывать в браузере. Заголовки передавать не могу.

Отслеживать
4,022 2 2 золотых знака 17 17 серебряных знаков 36 36 бронзовых знаков
задан 4 мар 2016 в 11:25
173 3 3 серебряных знака 13 13 бронзовых знаков
А отправить файл вместе с письмом?
4 мар 2016 в 11:26
файл может быть большим, и что бы гемора не было, файл лежит на нашем сервере.
4 мар 2016 в 11:27
Если вы вставляете ссылку, она в любом случае будет открываться браузером
4 мар 2016 в 11:27

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Для html

Можно использовать функцию copy для php если это нужно делать внутри на сервере

обязательно нужно указать название нового файла /newfile.html (к примеру) и рекомендую использовать абсолютный путь который получаем волшебной константой __DIR__ . В $url используйте ваш путь к файлу который нужно закачать на ваш сервер.

PHP: Скачать файл по его URL (по ссылке)

Рассмотрим несколько примеров скачивания изображения по его URL. Подобными способами можно скачать практически любой файл.

С использованием cURL

// Что скачиваем $from = 'https://www.google.com/logos/doodles/2023/mario-molinas-80th-birthday-6753651837110030-2x.png'; // Куда скачиваем $to = __DIR__ . '/upload/img.png'; $ch = curl_init($from); $fp = fopen($to, 'wb'); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp);

file_put_contents + file_get_contents

$url = 'https://www.google.com/logos/doodles/2023/mario-molinas-80th-birthday-6753651837110030-2x.png'; $path = __DIR__ . '/upload/img.png'; file_put_contents($path, file_get_contents($url));

Функция copy

$from = 'https://www.google.com/logos/doodles/2023/mario-molinas-80th-birthday-6753651837110030-2x.png'; $to = __DIR__ . '/upload/img.png'; copy($from, $to);

PHP, скачать файл по его URL

С помощью функции PHP file_get_contents() и file_put_contents():

$url = 'https://www.google.com.ua/logos/doodles/2016/earth-day-2016-5741289212477440.4-5728116278296576-ror.jpg'; $path = $_SERVER['DOCUMENT_ROOT'] . '/images/my-img.jpg'; file_put_contents($path, file_get_contents($url));

Пример с использованием с cURL:

$ch = curl_init('https://www.google.com.ua/logos/doodles/2016/earth-day-2016-5741289212477440.4-5728116278296576-ror.jpg'); $fp = fopen($_SERVER['DOCUMENT_ROOT'] . '/images/my-img.jpg', 'wb'); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp);

Web разработчик, специализируюсь на разработке full stack веб-приложений.
Если у вас есть предложения или вопросы свяжитесь со мной: facebook

Рекомендуемые

Рекомендуемые

Комментарии

Юрий 23 февраля 2017 17:08 #813
А как наоборот защитить страницу от скачивания картинок?

Александр Хмельницкий 23 февраля 2017 17:36 #814

Говорят есть один способ, но никто его не знает)))

А если серьезно, то никак

Константин Ка 18 августа 2018 09:37 #1278

Векторизуете картинку (благо сервисов полно), далее работаете как с текстовым файлом. Берете из него данные и подставляете в PHP.

 
$i = imageCreate(200, 300);

$color = imageColorAllocate($i, 255, 255, 0);

imageSetPixel($i, 30, 50, $color);



$color = imageColorAllocate($i, 255, 0, 0);

imageSetThickness($i, 3);

imageLine($i, 10, 10, 100, 100, $color);



imageSetThickness($i, 10);

imageRectangle($i, 0, 0, imageSX($i), imageSY($i), $color);



$color = imageColorAllocate($i, 255, 0, 0);

imageFilledRectangle($i, 100, 200, 150, 240, $color);



imageSetThickness($i, 2);

imageArc($i, 50, 100, 40, 50, 90, 300, $color);



$color = imageColorAllocate($i, 0, 255, 0);

imagePolygon($i, array(10, 20, 120, 250, 190, 290, 100, 290, 10, 20), 4, $color);



Header("Content-type: image/jpeg");

imageJpeg($i);

imageDestroy($i);

?>

Кстати тоже самое можно сделать и на JS, но достаточно добавить

canvas.toDataURL()

и скопируется тот де самый рисунок. но уже как растровая картинка

Как скачать файл средствами php?

В общем-то необходимо в коде PHP при срабатывании определённого условия начать скачку файла. Как это можно реализовать?

Под скачкой файла я подразумеваю:
Вывести в браузер посетителя сайта диалоговое окно загрузки файла на его компьютер (или если у него в браузере установлена автоматическая загрузка — загрузить файл на устройство посетителя)

  • Вопрос задан более трёх лет назад
  • 3434 просмотра

6 комментариев

Простой 6 комментариев

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *