作者dinos (守護神)
看板PHP
標題Re: [請益] 下載後,順便自動將檔案刪除
時間Sat Jul 12 11:00:49 2008
※ 引述《MyNameIs5566 (我是5566)》之銘言:
: ※ 引述《aleck945 (總是不知所措)》之銘言:
: : 突然發現好像誤會你的意思了.
: : 如果 user 直接在 browser 上輸入 http://127.0.0.1/temp/file1.zip
: : 那麼就跟 tmpfile() 沒什麼關係. (自噓一下)
: : 提出我的想法供參考:
: : 使用 http server redirect 的功能, 並且將 $html_home 的 temp 目錄清空,
: : 如果 user 直接在 browser 輸入 http://127.0.0.1/temp/file1.zip ,
: : 讓 http server redirect 到你的某個 php 程式,
: : 再將 file1.zip 的正確所在位置餵給 client,
: : 然後直接刪除該檔, 下次 user 再輸入 http://127.0.0.1/temp/file1.zip 時,
: : php 就可以告訴 user : file not found.
: 這樣的做法,
: 是不是我每次檔案都必須叫 file1.zip ?
: 而且都必須放在相同目錄呢?
: 如果每次都不叫 file1.zip ,
: 是不是每新增一個這樣的檔案,
: 就要去寫一次 redirect 呢?
: ==================================================================
: 其實我最初的懶人要求,
: 是希望能有一隻程式,
: 能直接 list 出該目錄下的檔案,
: 並能直接用這隻程式將檔案下載,
: 下載完後也能立即將我下載的檔案也一併刪除,
: 請問,這樣該怎麼做到呢?
: 謝謝討論!
[list.php] =======
<ul>
<?php
$dirBase='./';
$d=opendir($dirBase);
while(($f=readdir($d))!=false){
if($f=='.' || $f=='..')continue;
else if(is_dir($f))continue;
?>
<li><a href="download.php?f=<?php echo base64_encode($f); ?>"><?php
echo $f; ?></a></li>
<?php
}
close($d);
?>
</ul>
[download.php] ======
<?php
if(!isset($_GET['f'])) die('go die d-five d-six');
$f=base64_decode($_GET['f']);
if(strpos($f,'/')!==false) die('damn, don\'t try me');
if(!file_exists($f)) die('no reason');
$sub=substr($f,strrpos($f,'.')+1);
header('Contnet-Type: unknow/unknow');
header('Content-Disposition: attachment; filename="downloaded.'.$sub.'"');
echo file_get_contents($f);
@unlink($f);
?>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.158.15
推 MyNameIs5566:感謝分享,今晚再測試一下! 07/13 13:54
推 MyNameIs5566:^^" go die d-five d-six 07/13 22:35