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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

使用PHP实现文件上传

發(fā)布時(shí)間:2023/12/20 php 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用PHP实现文件上传 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ?這里使用PHP實(shí)現(xiàn)文件的上傳,由在瀏覽器這邊選擇文件,上傳到服務(wù)器。其中,在上傳文件中,考慮到對(duì)上傳文件大小的限制、類(lèi)型限制等問(wèn)題。(當(dāng)然可以根據(jù)我們需要修改對(duì)上傳的文件的限制,而一般而言php自身也同樣對(duì)將要上傳的文件大小進(jìn)行了限制,默認(rèn)為2M,也就是說(shuō)我們不能上傳太大的圖片。)這里我們限制用戶(hù)只能上傳jpg格式的圖片,此外,圖片大小不能超過(guò)2M。

文件上傳界面 upload.php

提交含上傳文件的表單時(shí),表單form需要設(shè)置enctype屬性:

<form action=”” enctype="multipart/form-data" method=”post”> 上傳文件<input type=”file” name=”myfile”/> <input type=”submit” value=”上傳”/> </form>
具體代碼如下:

<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <title>上傳你的File吧</title> </head> <form enctype="multipart/form-data" method="post" action="uploadprocess.php"> <table> <tr><td align="center" colspan="2"><font style="font-size:40px;font-family: 華文彩云;">文件上傳</font></td></tr> <tr><td>請(qǐng)?zhí)顚?xiě)用戶(hù)名:</td><td><input type="text" name="username"/></td></tr> <tr><td>請(qǐng)簡(jiǎn)單介紹該文件</td><td><textarea name="fileintro" rows="10" cols="80"></textarea></td></tr> <tr><td>請(qǐng)選擇你要上傳文件:</td><td><input type="file" name="myfile"/></td></tr> <tr><td><input type="submit" value="上傳文件"/></td><td></td></tr> </table> </form> </html>

上傳文件的處理 ?uploadprocess.php

<?php//1.接收提交文件的用戶(hù)$username=$_POST['username'];$fileintro=$_POST['fileintro'];//我們這里需要使用到 $_FILES/*echo "<pre>";print_r($_FILES);echo "</pre>";*///其實(shí)我們?cè)谏蟼魑募r(shí),點(diǎn)擊上傳后,數(shù)據(jù)由http協(xié)議先發(fā)送到apache服務(wù)器那邊,這里apache服務(wù)器已經(jīng)將上傳的文件存放到了服務(wù)器下的C:\windows\Temp目錄下了。這時(shí)我們只需轉(zhuǎn)存到我們需要存放的目錄即可。//php中自身對(duì)上傳的文件大小存在限制默認(rèn)為2M//獲取文件的大小$file_size=$_FILES['myfile']['size'];if($file_size>2*1024*1024) {echo "文件過(guò)大,不能上傳大于2M的文件";exit();}$file_type=$_FILES['myfile']['type'];echo $file_type;if($file_type!="image/jpeg" && $file_type!='image/pjpeg') {echo "文件類(lèi)型只能為jpg格式";exit();}//判斷是否上傳成功(是否使用post方式上傳)if(is_uploaded_file($_FILES['myfile']['tmp_name'])) {//把文件轉(zhuǎn)存到你希望的目錄(不要使用copy函數(shù))$uploaded_file=$_FILES['myfile']['tmp_name'];//我們給每個(gè)用戶(hù)動(dòng)態(tài)的創(chuàng)建一個(gè)文件夾$user_path=$_SERVER['DOCUMENT_ROOT']."/studyphp/file/up/".$username;//判斷該用戶(hù)文件夾是否已經(jīng)有這個(gè)文件夾if(!file_exists($user_path)) {mkdir($user_path);}//$move_to_file=$user_path."/".$_FILES['myfile']['name'];$file_true_name=$_FILES['myfile']['name'];$move_to_file=$user_path."/".time().rand(1,1000).substr($file_true_name,strrpos($file_true_name,"."));//echo "$uploaded_file $move_to_file";if(move_uploaded_file($uploaded_file,iconv("utf-8","gb2312",$move_to_file))) {echo $_FILES['myfile']['name']."上傳成功";} else {echo "上傳失敗";}} else {echo "上傳失敗";}?>

? ? ? ?上傳文件需要考慮到如下細(xì)節(jié):

(1)如何控制用戶(hù)上傳文件的大小 < 2M

//獲取文件的大小 $file_size=$_FILES['myfile']['size']; if($file_size>2*1024*1024) {echo "文件過(guò)大,不能上傳大于2M的文件";exit(); } (2)如何控制用戶(hù)上傳的文件類(lèi)型

$file_type=$_FILES['myfile']['type']; echo $file_type; if($file_type!="image/jpeg" && $file_type!='image/pjpeg') {echo "文件類(lèi)型只能為jpg格式";exit(); } (3)如何防止用戶(hù)圖片覆蓋問(wèn)題

//把文件轉(zhuǎn)存到你希望的目錄(不要使用copy函數(shù)) $uploaded_file=$_FILES['myfile']['tmp_name'];//我們給每個(gè)用戶(hù)動(dòng)態(tài)的創(chuàng)建一個(gè)文件夾 $user_path=$_SERVER['DOCUMENT_ROOT']."/studyphp/file/up/".$username; //判斷該用戶(hù)文件夾是否已經(jīng)有這個(gè)文件夾 if(!file_exists($user_path)) {mkdir($user_path); } ? ? ? ?為了防止不同用戶(hù)上傳的圖片文件名相同導(dǎo)致圖片被覆蓋的問(wèn)題,我們只要為不同用戶(hù)創(chuàng)建一個(gè)文件夾就行了,不同用戶(hù)上傳的文件存儲(chǔ)在不同文件夾中。

(4)如何防止同一個(gè)用戶(hù)的文件名相同的問(wèn)題

$file_true_name=$_FILES['myfile']['name']; $move_to_file=$user_path."/".time().rand(1,1000).substr($file_true_name,strrpos($file_true_name,".")); ? ? ? ?上面我們解決了不同用戶(hù)圖片覆蓋的問(wèn)題,但是如果同一用戶(hù)上傳了同一文件名不同文件內(nèi)容的圖片時(shí),同樣也會(huì)發(fā)生文件覆蓋的問(wèn)題,我們只需從C:\windows\Temp目錄中上傳的文件轉(zhuǎn)移到服務(wù)器真正要存儲(chǔ)的目錄時(shí)將原文件名進(jìn)行修改即可,而修改后的名字跟其他文件重名的幾率很低,修改后的名字由上傳文件的時(shí)間秒數(shù)和隨機(jī)數(shù)組成。


總結(jié)

以上是生活随笔為你收集整理的使用PHP实现文件上传的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。