日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

kingedit 上传php_php文件上传下载实例(实现最简单的网盘功能)

發布時間:2023/12/10 php 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kingedit 上传php_php文件上传下载实例(实现最简单的网盘功能) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本人是一個新手代碼狗,第一次發表博客,歡迎大大們指點!

最近手頭有一個文件上傳下載的案例,跟大家一起分享一下作為一個新手的苦逼成長歷程!

話不多說,先上代碼:

一:這個是一個文件上傳的html頁面,小博做的是上傳圖片(gif、png和jpg格式,200KB以內);

初稿做的是單一上傳,后來改成的批量上傳,在input中將name的名字從file改成file[],然后加上multiple=“multiple”就可以了(選擇上傳文件時可以使用鼠標或者鍵盤進行批量選擇);

其實一開始小博是傻傻的用了N個input框進行上傳的!= =。

二:圖片的后臺處理;

{mkdir("./pic");

}$file=$_FILES['file'];//獲取傳輸文件數組;

foreach($file["name"] as $valuename){ //遍歷文件['name數組'];得到字符串:1.png.2.png.3.png.;

$value.=$valuename.".";

};$strr=substr($value,0,strlen($value)-1); //字符串更新:1.png.2.png.3.png(去掉最后一個.);

$strarr=explode(".", $strr); //獲得數組如:arr(1,png,2,png,3,png,4,png);

$filetypearr=[];foreach($strarr as $key=>$valuea){if($valuea!=""){ //去掉上傳過來的空值;

if($key%2!=0){$filetypearr[]=$valuea; //獲得新數組,如:arr(png,png,png);

}

}

}$typearr=array("png","jpg","gif"); //可上傳類型數組

function checktype($typearr,$type){ //判斷類型方法;

foreach($typearr as $value){if($value==$type){return true;

}

}return false;

}foreach($filetypearr as $key=>$valueb){ //判斷格式類型是否正確;

if(!checktype($typearr,$valueb)){echo "";header("Refresh:0.1;url=piliangfile.html");exit;

}

}for($i=0;$i1024*200){ //判斷文件大小是否符合,如果文件過大會提示該文件,符合的文件會繼續上傳,不符合的文件不上傳;

echo "";header("Refresh:0.1;url=picscan.php");

}else{ //存儲文件,并跳轉到文件展示頁面;

move_uploaded_file($file['tmp_name'][$i], "pic/".$file["name"][$i]);header("Refresh:0.1;url=picscan.php");

}

}?>

小博在實際過程中對于文件名符合類型但是大小過大的文件實行攔截,其他符合的會先一步上傳。(但是如果上傳的文件類型中有不符合的,批量上傳會中斷,沒有文件上傳);

三:文件展示頁面(主頁面)

ini_set('date.timezone','Asia/Shanghai'); //時區設置,東八區上海時間;

function format_bytes($size) { //文件大小轉換方法(字節轉換為KB,MB,GB,TB);

$units = array(' B', ' KB', ' MB', ' GB', ' TB');for ($i = 0; $size >= 1024 && $i < 4; $i++) $size /= 1024;return round($size, 2).$units[$i];

}?>

序號文件名圖片大小最后修改時間全選

<?phpforeach ($picarr as $key=>$value){if($key>1){ //去掉前面的兩個空值;

echo "

";echo "".($key-1).""; //序號

echo "

".$value.""; //文件名

echo "

"; //圖片

echo "

".format_bytes(filesize("pic/$value")).""; //filesize 獲取文件大小(單位:B);

echo "

".date("Y-m-d H:i:s", filemtime("pic/$value")).""; //filemtime 獲取文件最后修改時間(單位:毫秒) date轉換時間

echo "

"; //多選框傳值(傳的是文件名)

echo "

";

}

}?>

function chooseall(str){ //全選方法

var cholen=document.getElementsByName('del[]').length;for(i=0;i<=cholen;i++){

document.getElementsByName('del[]')[i].checked=str;

}

}

document.getElementById("all").οnclick=function(){ //全選事件

if(this.checked==true){

chooseall(true);

}else{

chooseall(false);

}

}

四:刪除與下載后臺處理頁面

$picname=$_POST['del'];foreach($picname as $value){unlink("pic/$value"); //刪除對應的文件;

}

}else if($_REQUEST['download']){$picname=$_POST['del'];if($picname!=''){ //去掉空值的情況(沒有選中任何項,無表單傳值)

foreach($picname as $value){if(!file_exists("pic/$value")){ //沒有該文件時無法下載;

echo "";header("location:picscan.php");

}else{$fp=fopen("pic/$value","r"); //打開文件指針;

$file_size=filesize("pic/$value"); //文件的大小;

Header("Content-type: application/octet-stream"); //告知瀏覽器下載的文件類型;

Header("Accept-Ranges: bytes"); //返回的文件大小按照字節計算;

Header("Accept-Length:".$file_size); //返回的文件大小;

Header("Content-Disposition: attachment; filename=".$value); //返回的文件的名稱;

$buffer=1024;$file_count=0;while(!feof($fp) && $file_count

}fclose($fp);

}

}

}

}elseif ($_REQUEST['downloadall'] ) { //一個表單多個提交按鈕,區分提交按鈕的name值;

$picname=$_POST['del'];if($picname!=''){ //去掉空值的情況(沒有選中任何項,無表單傳值)

$filename = "pic/download.zip"; //最終生成的文件名(含路徑)

if(!file_exists($filename)){ //重新生成文件

$zip = new ZipArchive();//使用本類,linux需開啟zlib,windows需取消php_zip.dll前的注釋

if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {exit('無法打開文件,或者文件創建失敗');

}foreach( $picname as $val){if(file_exists("pic/$val")){$zip->addFile( "pic/$val", basename($val));//第二個參數是放在壓縮包中的文件名稱,如果文件可能會有重復,就需要注意一下

}

}$zip->close();//關閉

}if(!file_exists($filename)){exit("無法找到文件"); //即使創建,仍有可能失敗。。。。

}header("Cache-Control: public");header("Content-Description: File Transfer");header('Content-disposition: attachment; filename='.basename($filename)); //文件名

header("Content-Type: application/zip"); //zip格式的

header("Content-Transfer-Encoding: binary"); //告訴瀏覽器,這是二進制文件

header('Content-Length: '. filesize($filename)); //告訴瀏覽器,文件大小

@readfile($filename);unlink($filename);

}

}header("location:picscan.php");?>

還有好幾個功能沒有實現(文件的排序,中文文件名的轉碼等,涉及到批量上傳下載,中文轉碼老是報錯,如果有哪位大神有空,還請指點一二),慢慢摸索中......

總結

以上是生活随笔為你收集整理的kingedit 上传php_php文件上传下载实例(实现最简单的网盘功能)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。