问题描述
假设我有类似的东西
<a href="https://example.com/schedule.pdf">download me</a>
schedule.pdf
文件在后端经常更改,我希望用户始终获取最新副本。
此页面处于静态,因此在URL末尾添加随机?[somerandomnumber]是不可行的,并且在任何情况下,页面本身都可能会缓存在浏览器中,因此用户不会必定会看到带有链接的页面的新版本。
我可以在该语句中(或至少在附近,内联)添加任何内容,以确保它下载pdf的新副本吗?
我正在处理超出控制范围的过时CMS,因此我无法将任何内容推到meta标头中,甚至无法将CSS文件混为一谈。我正在寻找内联解决方案。我可以在其中投放任何特殊的OnClick魔术吗?
此外,是否有任何与浏览器无关的方法可以确保将https://example.com/schedule.pdf
放入浏览器的URL栏中将获得最新的副本,即使当前本地浏览器缓存中有内容呢?
实际上,我确实可以控制服务器上的Apache配置,因此可以在系统范围内进行更改。
PDF是我唯一要确保最新的内容。我不是要确保未缓存每个对象或页面,也不是要强制下载PDF而不是在浏览器中查看。我只是想确保当您单击该链接或手动输入文件的URL时,即使您的本地浏览器缓存中存在某些内容,您也可以获得该文件的最新副本。
解决方法
-----使用PHP的自动更新下载的完整代码链接-----
------如何使用PHP制作新的/自动更新的下载链接-----
在此php文件的相同位置创建一个名为“ pdf_folder”的文件夹,并在其中设置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>