PHP文件的上傳與下載

今天給大家介紹的是PHP文件的上傳與下載,分為兩部分,第一部分:文件的上傳,第二部分:文件的下載;

一.文件的上傳

原理:將客戶端的文件上傳到服務(wù)器端,在將服務(wù)器端的臨時(shí)文件移動(dòng)到指定目錄即可。

客戶端:準(zhǔn)備一個(gè)表單頁(yè)面,表單的發(fā)送方式為post,并且添加enctype="multipart/form-data",記?。喊l(fā)送方式一定為post,并且form里面一定要添加enctype="multipart/form-data",兩者缺一不可。

以下為客戶端的簡(jiǎn)單實(shí)現(xiàn)代碼:

服務(wù)器:用PHP預(yù)定義變量$_FILES來(lái)接收傳過(guò)來(lái)文件,以下為客戶端接收頁(yè)面的截圖:

$_FILES變量解析,以下為截圖:

數(shù)組解析:myfile為表單提交頁(yè)面自定義的name;name為上傳文件的名字;type為上傳文件的原始名稱;tmp_name為上傳文件的臨時(shí)保存文件的位置;error為上傳文件的錯(cuò)誤信息;size為上傳文件的大?。?/p>

服務(wù)端保存文件的兩種方式:

第一種:通過(guò)move_uploaded_file($tmp_name,$filename)函數(shù)實(shí)現(xiàn),以下為截圖:

第二種:通過(guò)copy()函數(shù)實(shí)現(xiàn),以下為截圖:

文件上傳常規(guī)配置解析,這些配置選項(xiàng)都在php.ini文件中,以下為截圖:

文件上傳的其他配置解析,以下為截圖:

上傳文件錯(cuò)誤信息說(shuō)明,以下為截圖:

客戶端上傳文件限制,以下為截圖:

服務(wù)器端上傳文件限制(單文件上傳實(shí)例):以下為截圖:

二.文件的下載

文件的下載一種是可以通過(guò)表單的超鏈接方式實(shí)現(xiàn),這個(gè)主要是實(shí)現(xiàn)瀏覽器不識(shí)別的文件類型,例如:

對(duì)于一些瀏覽器識(shí)別的文件,比如圖片,視頻來(lái)說(shuō)就要通過(guò)PHP代碼來(lái)實(shí)現(xiàn)了,以下為實(shí)現(xiàn)過(guò)程:

上面的這種方式雖然實(shí)現(xiàn)了文件的下載,但是也是有他的缺陷性的,比如不能批量下載,而且下載完之后瀏覽器的頁(yè)面會(huì)跳轉(zhuǎn),嚴(yán)重影響我們的業(yè)務(wù),下面的這種方式就解決了這個(gè)問(wèn)題。

<?php

/**

*@params string $url 要下載的文件地址

*@params string $filePath 要保存的文件位置

*/

function downFile($url,$filePath){

? if($url=='' || $url==NULL){

? ? ? ? return "下載地址不能為空";

? }

? $ext_name = strrchr($url,'.');//獲取文件的擴(kuò)展名

? ob_start();//打開(kāi)輸出緩沖區(qū),所有的輸出信息不在發(fā)送給瀏覽器,保存在緩沖區(qū)

? readfile($url);//將文件寫(xiě)入到緩沖區(qū)

? $file_data = ob_get_contents();//獲取緩沖區(qū)文件內(nèi)容,內(nèi)容為二進(jìn)制

? $filename = "./".$filePath.time().$ext_name;//構(gòu)建保存文件位置

? ob_end_clean();//清空緩沖區(qū)

? $local_file = fopen($filename,'a');//打開(kāi)文件

? $fwrite($local_file,$file_data);//將內(nèi)容寫(xiě)入文件

? fclose($local_file);//關(guān)閉文件

}

通過(guò)這個(gè)函數(shù),我們就可以輕松實(shí)現(xiàn)文件的下載,而且我們可以循環(huán)調(diào)用來(lái)實(shí)現(xiàn)批量下載。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文包括:1、文件上傳概述2、利用 Commons-fileupload 組件實(shí)現(xiàn)文件上傳3、核心API——Dis...
    廖少少閱讀 12,744評(píng)論 5 91
  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,329評(píng)論 0 10
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,652評(píng)論 1 32
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,809評(píng)論 1 45
  • 上傳模塊配置樣例: # 上傳大小限制(包括所有內(nèi)容) client_max_body_size 100m; # 上...
    SkTj閱讀 13,559評(píng)論 0 3

友情鏈接更多精彩內(nèi)容