Я работаю над созданием букмарклета, который позволяет пользователю перейти к документу PDF на удаленном сервере, а затем сохранить его в своей учетной записи на моем веб-сайте, щелкнув по букмарклету при просмотре удаленного PDF. Букмарклет перенаправляет их на страницу (codeigniter) на нашем сервере, передавая URL-адрес PDF, который позволяет им подтвердить, что они хотят PDF, и затем он сохраняется. Это все работает правильно, если они просматривают URL, заканчивающийся на «.pdf», но с одной проблемой … кажется, что некоторые сайты затеняют путь PDF, используя HTML-встраивание, даже не отображая фактический путь 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);
}
}
Можете ли вы попробовать это:
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);
}
Редактировать, небольшое обновление. Я думаю, что ошибка может быть что-то с базовым именем.
Других решений пока нет …