codeigniter — Bookmarklet для сохранения удаленного PDF на локальный сервер через переполнение стека

Я работаю над созданием букмарклета, который позволяет пользователю перейти к документу PDF на удаленном сервере, а затем сохранить его в своей учетной записи на моем веб-сайте, щелкнув по букмарклету при просмотре удаленного PDF. Букмарклет перенаправляет их на страницу (codeigniter) на нашем сервере, передавая URL-адрес PDF, который позволяет им подтвердить, что они хотят PDF, и затем он сохраняется. Это все работает правильно, если они просматривают URL, заканчивающийся на «.pdf», но с одной проблемой … кажется, что некоторые сайты затеняют путь PDF, используя HTML-встраивание, даже не отображая фактический путь PDF, например:

http://www.plosone.org/article/fetchObject.action?uri=info:doi/10.1371/journal.pone.0120686&представление = PDF

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

Есть ли способ обойти это так, что фактический PDF будет перенесен?

Мой код перевода, если он актуален:

function transfer () {
$url = $this->session->userdata('url');
if (!$url) die();

$destination_folder = 'uploads/';
$newfname = $destination_folder . basename($url);
$file = fopen ($url, "rb");
if ($file) {
$newf = fopen ($newfname, "wb");
if ($newf)
while(!feof($file)) {
fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
}
}
if ($file) {
fclose($file);
}
if ($newf) {
fclose($newf);
}
}

0

Решение

Можете ли вы попробовать это:

function transfer () {
$url = $this->session->userdata('url');
if (!$url) die();
$destination_folder = 'uploads/';
if(stripos($url,".pdf")===false)
$newfname = $destination_folder . basename($url).".pdf";
else
$newfname = $destination_folder . basename($url);
$pdf = file_get_contents($url):
file_put_contents($newfname, $pdf);

}

Редактировать, небольшое обновление. Я думаю, что ошибка может быть что-то с базовым именем.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector