#html #url #href #page-refresh
#HTML #url #href #страница-обновить
Вопрос:
Допустим, у меня есть что-то вроде
<a href="https://example.com/schedule.pdf">download me</a>
schedule.pdf
Файл часто меняется на серверной части, и я хочу, чтобы пользователь всегда получал самую последнюю копию.
Страница, на которой это находится, статична, поэтому добавление случайного?[somerandomnumber] указывать в конце URL-адреса невозможно, и в любом случае сама страница может быть кэширована в браузере, поэтому пользователь не обязательно увидит новую версию страницы со ссылкой на нее.
Есть ли что-нибудь, что я могу поместить в это заявление (или, по крайней мере, рядом, встроенное), что обеспечит загрузку свежей копии PDF?
Я имею дело с устаревшей CMS вне моего контроля, поэтому я не могу ничего вставить в мета-заголовок или даже испортить файлы CSS. Я ищу встроенное решение. Какую-нибудь специальную магию OnClick я могу добавить туда?
Кроме того, существует ли какой-либо независимый от браузера способ убедиться, что при вводе https://example.com/schedule.pdf
в строку URL браузера будет получена самая последняя копия, даже если в локальном кэше браузера что-то есть прямо сейчас?
На самом деле у меня есть контроль над конфигурацией Apache на сервере, поэтому я мог бы внести общесистемные изменения.
PDF — это единственное, в чем я хочу убедиться, что он свежий. Я не пытаюсь убедиться, что каждый объект или страница не кэшированы, и я не пытаюсь принудительно загружать PDF-файл вместо просмотра в браузере. Я просто пытаюсь убедиться, что при нажатии на эту ссылку или вручную вводе URL-адреса файла вы получаете самую последнюю копию файла, даже если что-то находится в вашем локальном кэше браузера.
Ответ №1:
—— Полный код для автоматического обновления Ссылка для скачивания с PHP ——
—— Как создать новую / автоматически обновляемую ссылку для скачивания с помощью PHP ——
Создайте папку с именем «pdf_folder» в том же месте, что и этот php-файл, и установите в нее PDF-файл,
Вы можете загрузить код отсюда:https://eetsceeck.cf/pdf_script /
Вот полный код:
<?php
// ============================================= LEAVE ME ALONE DONT TOUCH ME
// DEFINE DEFAULT VARY (AVOID UNDEFINE VARIABLES ERRORS)
$PDF_FOR_DOWNLOAD_FILE_NAME = "";
// DEFINE THE PATH OF THE PDF FOLDER
//
$PDF_Folder_location = "./pdf_folder/";
// ============================================= LEAVE ME ALONE DONT TOUCH ME
// USE QUERY TO LOOK FOR THE LATEST FILE CREATED BY DATE AND TIME FUNCTION
// AS WELL FETCH THE FILE NAME
//
FUNCTION Get_latest_file ($PDF_Folder_location) {
// ARRANGE PDF IN ARRAY FOR SORTING
$OPEN_dir = opendir($PDF_Folder_location); // = > PDF directory
// WHILE LOOP - IF THERE ARE PDF'S GET THEM //=>
//
WHILE (false !== ($PDF_file = readdir($OPEN_dir))) {
if (strstr($PDF_file,".pdf"))
// IF EXIST EXECUTE A LIST BY DATE/TIME - FETCH TO ARRAY ALL INFO DATE/TIME=>NAME
// ARRAY
$PDF_file_list[] = DATE("YmdHis ", FILEMTIME($PDF_Folder_location.$PDF_file)).$PDF_Folder_location.$PDF_file;
} // <= END OF WHILE LOOP
// SORT RESULTS OF ARRAY
//
rsort($PDF_file_list);
//
// END OF FETCH
// DEFINE VARY FOR FILENAME ONLY TO BE EXECUTED AS LINK PATH TO FILE
echo $PDF_FOR_DOWNLOAD_FILE_NAME = BASENAME($PDF_file_list[0]); // (USE ME FOR YOUR HTML LINK TO YOUR PDF DOWNLOAD BUTTON)
} // END OF FUNCTION FOR LATEST PDF FILE
?>
<!doctype html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta charset="utf-8">
<title>PDF file download</title>
<style>
html,
body,
#container {
height: 100%;
width: 100%;
}
body {
background-color: #FFFFFF;
color: #000000;
font-family: Arial;
font-size: 13px;
font-weight: normal;
line-height: 1.1875;
margin: 0;
overflow-x: hidden;
overflow-y: hidden;
padding: 0;
}
#PDF_file_download_btn {
-webkit-appearance: none;
background-color: #000000;
background-image: none;
border: 0px solid #2E6DA4;
color: #FFFFFF;
font-family: "Roboto Condensed";
font-size: 21px;
font-weight: normal;
line-height: 60px;
margin: 0;
text-align: center;
text-decoration: none;
vertical-align: top;
}
#PDF_file_download_btn:hover {
-moz-transition: background-color 100ms linear 0ms;
-webkit-transition: background-color 100ms linear 0ms;
background-color: #FF0000;
transition: background-color 100ms linear 0ms;
}
#PDF_file_download_btn {
-moz-transition: all 100ms linear 0ms;
-webkit-transition: all 100ms linear 0ms;
transition: all 100ms linear 0ms;
}
#container {
background-color: #FBFBFB;
background-image: none;
}
#container {
height: 330px;
left: 0px;
overflow: hidden;
position: absolute;
text-align: center;
top: 0px;
width: 100%;
z-index: 1;
}
#container_Container {
margin-left: auto;
margin-right: auto;
position: relative;
text-align: left;
width: 800px;
}
#PDF_file_download_btn {
height: 60px;
left: 225px;
position: absolute;
top: 135px;
width: 350px;
z-index: 0;
}
a {
color: #0000FF;
text-decoration: underline;
}
a:visited {
color: #800080;
}
a:active {
color: #FF0000;
}
a:hover {
color: #0000FF;
text-decoration: underline;
}
input:focus,
textarea:focus,
select:focus {
outline: none;
}
.visibility-hidden {
visibility: hidden;
}
h1,
.h1 {
background-color: transparent;
color: #000000;
display: inline;
font-family: Arial;
font-size: 32px;
font-weight: bold;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
text-decoration: none;
}
h2,
.h2 {
background-color: transparent;
color: #000000;
display: inline;
font-family: Arial;
font-size: 27px;
font-weight: bold;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
text-decoration: none;
}
h3,
.h3 {
background-color: transparent;
color: #000000;
display: inline;
font-family: Arial;
font-size: 24px;
font-weight: bold;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
text-decoration: none;
}
h4,
.h4 {
background-color: transparent;
color: #000000;
display: inline;
font-family: Arial;
font-size: 21px;
font-style: italic;
font-weight: bold;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
text-decoration: none;
}
h5,
.h5 {
background-color: transparent;
color: #000000;
display: inline;
font-family: Arial;
font-size: 19px;
font-weight: bold;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
text-decoration: none;
}
h6,
.h6 {
background-color: transparent;
color: #000000;
display: inline;
font-family: Arial;
font-size: 16px;
font-weight: bold;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
text-decoration: none;
}
.CustomStyle {
background-color: transparent;
color: #2E74B5;
font-family: "Courier New";
font-size: 16px;
font-weight: bold;
text-decoration: none;
}
</style>
</head>
<body>
<div id="container">
<div id="container_Container">
<!-- i am here for test purposes only you can delete me no issue with that -->
<?php
echo '<br>';
echo '<br>';
echo 'i am your newest pdf file and my name is:';
echo '<br>';
echo Get_latest_file($PDF_Folder_location);
?>
<br>
<br>
<!-- i am here to echo the whole
function so your file name
will be available to download
so you cannot delete me, you need me!
-->
<a id="PDF_file_download_btn" href="./pdf_folder/<?php echo Get_latest_file($PDF_Folder_location); ?>" title="My dummy pdf file - download me">
Dummy PDF file Download
</a>
</div>
</div>
</body>
</html>
Комментарии:
1. Спасибо за вашу помощь… просто пытаюсь выяснить фактическую реализацию здесь… Я бы поместил текст в whatever.php файл на сервере и использовать его в href вместо whatever.pdf, или я бы поместил туда всю
<?PHP echo $PDF_FOR_DOWNLOAD_FILE_NAME; ? >
информацию? Я спрашиваю, потому что CMS очень ограничительна, и я не уверен, что это позволит этому пройти. Он уже постоянно переформатирует мои поля и тому подобное. Использование статического имени файла и постоянная замена файла — это уже попытка взломать его. Даже для получения php на сервере может потребоваться хитрость.2. Обновленный исходный ответ. пожалуйста, проверьте полный код.
3. Извините, я не хочу показаться грубым, у меня просто не было времени протестировать это соответствующим образом. Я ценю ваши усилия. Я думаю, что усилия, которые вы приложили к тому, чтобы сделать скрипт модульным и полезным для будущих пользователей Google по этому вопросу, усложнили для меня понимание. Когда у меня будет время по-настоящему изучить его, я уделю ему то внимание, которого он заслуживает. Я просто не хотел, чтобы вы чувствовали, что вас игнорируют. Ваша хорошая работа не пропадет даром, поскольку эти вопросы будут документироваться здесь в течение длительного времени. Еще раз спасибо, и я надеюсь скоро получить надлежащий ответ!
4. Хорошо, я все еще не понимаю, что вы пытаетесь сделать с этим кодом. Вы пытаетесь выбрать самый последний PDF-файл из списка PDF-файлов в заданной папке? Потому что это не то, что я пытаюсь сделать. У меня есть один файл, который всегда имеет одно и то же имя, но этот файл может измениться. Когда это изменится, большинство браузеров не будут автоматически перезагружать его. Я хочу, чтобы он перезагружался при каждом нажатии на него.
5. то, чего вы пытаетесь достичь, возможно просто с помощью htaccess, вы можете настроить кэширование файлов PDF на минуту, я думал, вы будете загружать новый файл каждый раз, когда вы обновляете pdf, мой код по-прежнему действителен для вас, потому что, даже если вы обновите то же имя файла, php обновит его для вас, потому что теперь это не зависит от какого-либо кэша, это зависит от хэша файла, который php обновит для вас, вы можете протестировать его, просто загрузите полный код, вставьте PDF-файл с заголовок «pdf 1», загрузите его, а затем вставьте другой PDF-файл с тем же именем, с другим заголовком, например «pdf