php檔案上傳與下載的配置
php.ini中檔案上傳功能配置選項說明 用文字工具(推薦EditPlus)開啟php.ini 配置檔案,查詢 File Uploads ,在這個區域有以下3個選項: file_uploads = On 是否允許HTTP檔案上傳。預設值為On允許HTTP檔案上傳,此選項不能設定為Off。 upload_tmp_dir = 檔案上傳的臨時存放目錄。如果沒指定則PHP會使用系統預設的臨時目錄。該選項預設為空,此選項在手動配置PHP執行環境時,也容易遺忘,如果不配置這個選項,檔案上傳功能就無法實現,你必須給這個選項賦值,比如upload_tmp_dir = "d:/fileuploadtmp" ,代表在D盤目錄下有一個fileuploadtmp目錄,並且給這目錄讀寫許可權。
下載功能
1.如果是其他檔案,直接在a標籤的href屬性中填寫路徑,可以下載。
2.如果是一個圖片檔案,那麼直接在a標籤的href屬性中,填寫路徑是不能進行下載。
那麼需要進行以下操作步驟:
PHP檔案下載固定4句話:
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="'. basename($path) .'"');
header("Content-Length: ". filesize($path));
readfile($path);
所需的引數是:檔案路徑
思路:建立Doc/download方法,在方法中獲取要下載的檔案路徑,呼叫上面4句話進行下載
- 修改檔案下載地址,將檔案的doc_id傳遞到download方法中
{volist name="sourcelist" id="list"} <div class="max-box"> <div class="image-box"><img src="/images/{$list.image}"></div> <div class="text-box"> <div class="text-left-box"> <p>{$list.name}</p> <p>{$list.description}</p> </div> <div class="text-right-box"> <a href="{:url('source/sourcedownload',['id'=>$list.id])}" class="btn btn-primary btn-sm shiny"> <i class="glyphicon glyphicon-save"></i> 下載 </a> </div> </div> <hr/> </div> {/volist}
- 建立Doc/download方法,接收doc_id,根據id查詢對應的路徑,再呼叫4句下載函式,進行下載操作。
function download(){
//接收公文id $id = I('get.id');
//根據公文id查詢對應的附件路徑 $data = D('Doc')->field('doc_file')->find($id);
$path = $data['doc_file'];
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="'. basename($path) .'"');
header("Content-Length: ". filesize($path));
readfile($path);
}