溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php中三種下載文件的方法

發(fā)布時(shí)間:2021-06-22 10:10:33 來源:億速云 閱讀:143 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“php中三種下載文件的方法”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“php中三種下載文件的方法”這篇文章吧。

1、直接添加文件鏈接

<button>
    <a href = "http://localhost/down.zip">
    下載文件</button>

點(diǎn)擊該按鈕下載:
php中三種下載文件的方法

2、傳遞參數(shù)查找并跳轉(zhuǎn)到下載鏈接

傳遞參數(shù):

<button>
    <a href = "http://localhost?f='down'">
    下載文件
</button>

查找文件并挑戰(zhàn)到下載鏈接:

<?php

$down = $_GET['f'];   //獲取文件參數(shù)
$filename = $down.'.zip'; //獲取文件名稱
$dir ="down/";  //相對(duì)于網(wǎng)站根目錄的下載目錄路徑
$down_host = $_SERVER['HTTP_HOST'].'/'; //當(dāng)前域名


//判斷如果文件存在,則跳轉(zhuǎn)到下載路徑
if(file_exists(__DIR__.'/'.$dir.$filename)){
    header('location:http://'.$down_host.$dir.$filename);
}else{
    header('HTTP/1.1 404 Not Found');
}

結(jié)果:

  • 文件存在

php中三種下載文件的方法

  • 文件不存在
    php中三種下載文件的方法

3、head() 和 fread()函數(shù)把文件直接輸出到瀏覽器

<?php  
$file_name = "down";$file_name = "down.zip";     //下載文件名    $file_dir = "./down/";        //下載文件存放目錄    //檢查文件是否存在    if (! file_exists ( $file_dir . $file_name )) {    
    header('HTTP/1.1 404 NOT FOUND');  
} else {    
    //以只讀和二進(jìn)制模式打開文件   
    $file = fopen ( $file_dir . $file_name, "rb" ); 

    //告訴瀏覽器這是一個(gè)文件流格式的文件    
    Header ( "Content-type: application/octet-stream" ); 
    //請(qǐng)求范圍的度量單位  
    Header ( "Accept-Ranges: bytes" );  
    //Content-Length是指定包含于請(qǐng)求或響應(yīng)中數(shù)據(jù)的字節(jié)長(zhǎng)度    
    Header ( "Accept-Length: " . filesize ( $file_dir . $file_name ) );  
    //用來告訴瀏覽器,文件是可以當(dāng)做附件被下載,下載后的文件名稱為$file_name該變量的值。
    Header ( "Content-Disposition: attachment; filename=" . $file_name );    

    //讀取文件內(nèi)容并直接輸出到瀏覽器    
    echo fread ( $file, filesize ( $file_dir . $file_name ) );    
    fclose ( $file );    
    exit ();    
}

結(jié)果:和第二個(gè)一樣

總結(jié):第一個(gè)和第二個(gè)操作比較簡(jiǎn)單,但是容易暴露文件的真實(shí)地址,安全性不高,第三種能夠較好的把文件的真實(shí)地址隱藏起來

以上是“php中三種下載文件的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI