如何動態更改使用php下載的文件名?這個Excel表格是使用Javascript從HTML表格轉換而來的。現在我想在每次下載時動態更改文件名。我正在使用一個input
類型的按鈕作爲下載按鈕。動態更改下載的文件名
編者按:根據意見 ,如下這個問題可能會改寫。
我希望人們能夠從服務器下載Excel工作表。如何強制文件下載並根據月份設置文件的名稱?當我下載的文件就說明「 download.xls 」
No code provided
看評論:
如何動態更改使用php下載的文件名?這個Excel表格是使用Javascript從HTML表格轉換而來的。現在我想在每次下載時動態更改文件名。我正在使用一個input
類型的按鈕作爲下載按鈕。動態更改下載的文件名
編者按:根據意見 ,如下這個問題可能會改寫。
我希望人們能夠從服務器下載Excel工作表。如何強制文件下載並根據月份設置文件的名稱?當我下載的文件就說明「 download.xls 」
No code provided
看評論:
可以重命名PHP的重命名功能http://php.net/manual/en/function.rename.php
服務器上的文件,你寫
這個Excel片使用Javascript從HTML錶轉換。
這意味着HTML表格在客戶端已經可以作爲EXCEL文件使用。
如果是這樣的話,沒有理由將轉換後的EXCEL文件從客戶端推回到服務器,這樣客戶端就可以再次從服務器上下載它。這是沒有意義的,浪費無用循環的帶寬。換句話說:當EXCEL文件已經駐留在客戶端的Javascript內存中時,所有您需要做的就是根據Javascript的Math.random()
將您的(Javascript轉換的)EXCEL文件存儲到文件名中。至於簡單的文件保存方法,諸如HTML5的文件保存功能(作爲多種方式之一)可能會成爲您最好的朋友。
想一想:如果你坐在家中的沙發上,你不會開車上班只是爲了能夠回家,從家裏的廚房裏取冰箱裏的啤酒,是嗎?對,你只要呆在家裏,走進廚房拿起啤酒。 ;)
同樣在這裏:如果您將其轉換爲客戶端,並且客戶端在他的計算機內存中有該文件,請讓他將其保存到他的磁盤上。不要強迫他上傳整個文件,以便他可以下載它......正如所說:Javascript的Math.random()
使您能夠生成一個隨機數,您可以使用它隨機創建隨機文件名。
:
但如何根據這些每月下載的文件保存與動態文件名。
要創建基於當月的文件名,你可以使用JavaScript的日期是這樣的:
var now = new Date();
var month = now.getMonth();
如果你正在尋找的提示如何存儲你的文件的客戶端,你可能想潛入:
如果你想處理IT方面erver端和推向使用PHP與基於year-month-day
自己的文件名客戶端的文件,你可以去這樣的:
<?php
$realname = './data.xls';
if (file_exists($realname))
{
$randname = 'YourExcelFilename'.gmdate('Y-m-d').'.xls';
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename='.$randname);
header('Content-Length: '.filesize($realname));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
ob_clean();
flush();
readfile($file);
}
exit();
?>
(EDIT 2:通過去除2個不必要的標題更正上面的例子thanks to a comment by @Herbert)
如果你想要更多的替代解決方案,你可能要檢查的答案the two questions I linked in my first comment因爲你的問題是這些問題的一個潛在的重複
將生成的文件名應用於Content-Disposition標頭。
header("Content-Disposition: attachment; filename=\"$random_filename\"");
header('Content-type: application/vnd.ms-excel');
readfile($actual_filename);
你用什麼代碼下載文件? – putvande
另外,是否要更改服務器上文件的名稱或保持服務器上文件的名稱相同,但更改下載文件的名稱? – putvande
雅我想保持在服務器上的文件的名稱相同 – rahul