Принудительно загружать исходный URL, добавляя заголовки URL - PullRequest
1 голос
/ 19 февраля 2020

У меня есть исходный URL, который отображает PDF-документ в браузере. Предполагается загрузить автоматически.

Пример URL: http://doc.local.com/storage/temporary/2020-02-19/c3e175b4706492be8c0d90e497c86ea7/test.pdf

Точно хочу реализовать, как работает временный URL amazon s3 (они добавили все заголовки в URL)

response-content-disposition=attachment

Пожалуйста, не предлагайте мне использовать следующий код, так как интерфейс ожидает URL

header("Content-Length: " . filesize($file));
header("Content-Type: application/octet-stream;");
readfile($file);

Ответы [ 3 ]

2 голосов
/ 20 февраля 2020

У меня есть небольшой взлом для выполнения этой задачи -

Давайте предположим, что ваш URL-это что-то -

https://somedomain.com/somepath/file.pdf

Создайте API, как показано ниже -

https://somedomain.com/somepath/file.pdf?signature=signature&ttl=some-ttl
  • подпись для подтверждения запроса: аутентична c или нет
  • ttl предназначен для проверки, активен ли URL для этой подписи

Затем после проверки запроса API Вы можете вернуть ответ о загрузке, как показано ниже -

public function getDownload()
{
    //PDF file is stored under project/public/download/info.pdf
    $file= public_path(). "/download/info.pdf";

    $headers = array(
              'Content-Type: application/pdf',
            );

    return Response::download($file, 'filename.pdf', $headers);
}

ref - Загрузка файлов в laravel с использованием Response :: download

1 голос
/ 20 февраля 2020

Простое решение от внешнего интерфейса.

Если внешний интерфейс имеет href и запускает его, этот код будет работать наверняка.

Я тестировал в самом PHP здесь, здесь это код.

$url = 'http://doc.local.com/storage/temporary/2020-02-19/c3e175b4706492be8c0d90e497c86ea7/test.pdf';
echo '<a download href="'. $url .'" target="_blank">click</a>';

Если внешний интерфейс перенаправляет URL вместо триггера, нужно найти решение.

0 голосов
/ 19 февраля 2020

Я считаю, что это функция вашего браузера вместо реального кода. Большинство современных браузеров имеют функцию автоматического открытия PDF-файлов внутри окна браузера. Этот параметр задает c для вашего браузера.

Google Chrome:

Настройки -> Настройки сайта -> Документы PDF

...