第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用 PHP 如何強(qiáng)制下載帶有隨機(jī)文件名和類型的文件

使用 PHP 如何強(qiáng)制下載帶有隨機(jī)文件名和類型的文件

PHP
慕桂英3389331 2022-11-12 13:40:32
我在這里看到了一些已回答的問題以強(qiáng)制下載文件,但沒有一個(gè)問題是文件名和類型未知或可能有所不同。此外,僅在單擊文件鏈接時(shí)才強(qiáng)制下載(而不是在頁面加載/刷新時(shí),這是我嘗試失敗期間發(fā)生的情況)。我在 Web 服務(wù)器上有一個(gè)文件夾,其中可以包含一些具有隨機(jī)文件名的不同文件類型。允許的文件類型有:doc、docx、pdf、jpg、jpeg、png 和 gif(但以后會(huì)添加更多)。文件名由使用不同 php 文件上傳文件的用戶確定。用戶瀏覽器僅下載 doc 和 docx。其他顯示在瀏覽器中。我曾試圖讓用戶右鍵單擊該文件來下載它,但這被置若罔聞。顯示文件的代碼很簡(jiǎn)單。<?php    $dir = opendir('uploads/');    echo '<ul>';    while ($read = readdir($dir))    {        if ($read!='.' && $read!='..')        {                   echo '<li><a href="uploads/'.$read.'">'.$read.'</a></li>';        }    }    echo '</ul>';    closedir($dir);     ?>  我想要的是在他們單擊鏈接或鏈接右側(cè)的單獨(dú)下載按鈕時(shí)強(qiáng)制啟動(dòng)下載對(duì)話框。這很容易使用 php 嗎?
查看完整描述

2 回答

?
喵喵時(shí)光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊

<a href="downloader.php?file=filename.extension">filename</a>

然后在downloader.php文件中


<?php


    ignore_user_abort(true);  // prevents script termination

    set_time_limit(0); // prevent time out


    $file =  isset($_GET['file']) ? $_GET['file'] : ''; //get filename


    if ($file) {

        $path_info = pathinfo($_GET['file']);

        $file_name = $path_info['basename'];

        $dir = "uploads";  //directory


        $path_to_file = $dir.'/'.$file_name; //full path


        if(!file_exists($path_to_file)) {  // check if file exist or terminate request


           exit('the file does not exist');

        }


        if(!is_readable($path_to_file)) { //check if file is readable from the directory


          exit("security issues. can't read file from folder");


         }


    // set download headers for file


         $finfo = finfo_open(FILEINFO_MIME_TYPE);

         header('Content-Type: ' . finfo_file($finfo, $path_to_file));


         $finfo = finfo_open(FILEINFO_MIME_ENCODING);

         header('Content-Transfer-Encoding: ' . finfo_file($finfo, $path_to_file)); 


         `header('Content-disposition: attachment; filename="' .` basename($path_to_file) . '"'); 


        readfile($path_to_file); // force download file with readfile()


    } else {


        exit('download paramater missing');

    }


?>


查看完整回答
反對(duì) 回復(fù) 2022-11-12
?
吃雞游戲

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

首先創(chuàng)建一個(gè)將接受參數(shù)的下載處理程序文件。


我將其命名為 download.php


下載.php

<?php

ignore_user_abort(true);  // prevents script termination

set_time_limit(0); // prevent time out


$file =  isset($_GET['file']) ? $_GET['file'] : ''; //get filename


if ($file) {

    $path_info = pathinfo($_GET['file']);

    $file_name = $path_info['basename'];

    $dir = "uploads";  //directory

    

    $path_to_file = $dir.'/'.$file_name; //full path


    if(!file_exists($path_to_file)) {  // check if file exist or terminate request


       exit('the file does not exist');

    }

    

    if(!is_readable($path_to_file)) { //check if file is readable from the directory

     

      exit("security issues. can't read file from folder");


     }

 

// set download headers for file


     $finfo = finfo_open(FILEINFO_MIME_TYPE);

     header('Content-Type: ' . finfo_file($finfo, $path_to_file));

  

     $finfo = finfo_open(FILEINFO_MIME_ENCODING);

     header('Content-Transfer-Encoding: ' . finfo_file($finfo, $path_to_file)); 


     header('Content-disposition: attachment; filename="' . basename($path_to_file) . '"'); 


    readfile($path_to_file); // force download file with readfile()


else {


exit('download paramater missing');

}

?>

用法

<a href="download.php?file=randomfilename.pdf">My pdf </a>

希望這可以幫助。


查看完整回答
反對(duì) 回復(fù) 2022-11-12
  • 2 回答
  • 0 關(guān)注
  • 175 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)