PHP檔案上傳及下載源碼,
一、檔案上傳
前台頁面:
DOCTYPE html><html><head> <meta charset="utf-8"> <title>檔案上傳title>head><body><div> <form method="post" action="upload.php" enctype="multipart/form-data" > 使用者名稱<input type="text" name="username">input> <br> 檔案簡單介紹<br><textarea name="fileintro" rows="8" cols="50">textarea> <br>選擇要上傳的檔案<br><input type="file" name="myfile">input><br> <input type="submit" value="上傳檔案">input> form>div>body>html>
幕後處理:
php//接收提交頁面傳送的相關資訊$name = $_POST['username'];$intro = $_POST['fileintro'];//$_FILES中存放著檔案的相關資訊// echo "";// print_r($_FILES);// echo "
";//可以在這裡對檔案大小進行限制/*$filesize = $_FILES['myfile']['size'];if($filesize>2*1024*1024){ echo "檔案過大,不能上傳"; exit();}*/ //可以對檔案類型進行限制 /*$filetype = $_FILES['myfile']['type']; if($filetype!='image/jpg'&&$filetype!='application/pdf'){ echo "檔案類型只能是jpg和pdf"; exit(); }*/ if (is_uploaded_file($_FILES['myfile']['tmp_name'])) { //把檔案轉存到你希望存放的目錄 $uploaded = $_FILES['myfile']['tmp_name']; //每個使用者動態建立一個檔案夾 $userpath = $_SERVER['DOCUMENT_ROOT']."/up/".$name; //判斷該使用者是否已經有檔案夾 if(!file_exists($userpath)){ mkdir($userpath); } //防止同一使用者上傳同名檔案,可在檔案中新增時間戳記。 //$moveto = $userpath."/".time().$_FILES['myfile']['name']; //或者對檔案名稱進行修改,但是需要使用字串處理截得檔案尾碼名 $truename = $_FILES['myfile']['name']; $moveto = $userpath."/".time().substr($truename,strrpos($truename,".")); if(move_uploaded_file($uploaded,iconv("utf-8", "gb2312", $moveto))){ echo "上傳檔案".$_FILES['myfile']['name']."成功"; }else{ echo "上傳檔案".$_FILES['myfile']['name']."失敗"; }}else{ echo "上傳檔案".$FILES['myfile']['name']."失敗";}?>
二、檔案下載:
單檔案下載:
php function down_file($file_name,$file_path){ //$file_name = iconv("uft-8","gb2312",$file_name); //如果檔案名稱是中文,需要對中文名稱轉碼gb2312 //要下載的檔案讀取到伺服器的記憶體中 //伺服器返迴文件資料給瀏覽器 //瀏覽器將檔案寫入使用者指定的位置 //1.判斷檔案是否存在 if(!file_exists($file_name)){ echo "111"; return ; } $fp = fopen($file_name,"r"); $file_size = filesize($file_name); //擷取檔案大小 //可通過file_size限制瀏覽器下載檔案大小。 //返回的檔案 header("Content-type:application/octet-stream"); //按位元組大小返回 header("Accept-Ranges:bytes"); //返迴文件大小 header("Accept-Length:$file_size"); //用戶端彈出對話方塊,對應的檔案名稱 header("Content-Disposition:attachment;filename=".$file_name); $buffer = 1024; //定義緩衝區 //為了下載的安全,最好使用檔案位元組讀取計數器 $file_count = 0; //feof用於判斷檔案是否讀取到文檔尾 while(!feof($fp) && ($file_size-$file_count>0)){ $file_data = fread($fp,$buffer); //統計讀了多少個位元組 $file_count+$buffer; echo $file_data; //把部分資料會送給瀏覽器 } fclose($fp); //關閉檔案 }?>
多個檔案下載:
DownList.php:
down
down
down
down
downprocess.php:
php $filename = $_REQUEST['filename']; function down_file($file_name){ if(!file_exists($file_name)){ echo "111"; return ; } $fp = fopen($file_name,"r"); $file_size = filesize($file_name); header("Content-type:application/octet-stream"); //按位元組大小返回 header("Accept-Ranges:bytes"); //返迴文件大小 header("Accept-Length:$file_size"); //用戶端彈出對話方塊,對應的檔案名稱 header("Content-Disposition:attachment;filename=".$file_name); $buffer = 1024; //定義緩衝區 $file_count = 0; //feof用於判斷檔案是否讀取到文檔尾 while(!feof($fp) && ($file_size-$file_count>0)){ $file_data = fread($fp,$buffer); //統計讀了多少個位元組 $file_count+$buffer; echo $file_data; //把部分資料會送給瀏覽器 } fclose($fp); } down_file($filename);?>
http://www.bkjia.com/PHPjc/1131344.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1131344.htmlTechArticlePHP檔案上傳及下載源碼, 一、檔案上傳 前台頁面: ! DOCTYPE html html head meta charset ="utf-8" title 檔案上傳 / title / head body div form method ="post" a...