今天用PHP實現一個圖片上傳功能。踩了幾個坑,記錄下~php
前臺代碼html
<form action="index.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="upload"> </form>
方法要用post,必須加上enctype="multipart/form-data"。不然文件沒法上傳
後臺php部分數組
<?php $name=$_FILES["file"]["name"]; $type=$_FILES["file"]["type"]; $size=$_FILES["file"]["size"]; $error=$_FILES["file"]["error"]; $dir='upload/'; //upload error if($error>0){ echo 'fail to upload'; exit; } //type select error if($type=='image/gif' || $type == "image/jpeg" || $type == "image/pgpeg" || $type == "image/png"){ //size larger than 30kb if($size>30*1024){ echo 'uploaded is more than 30kb'; exit; } //make $dir if not exist if(!file_exists($dir)){ mkdir('upload/'); } //if upload is exist if(file_exists('upload/'.$name)){ echo 'file exist'; }else{ move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".$name); echo "upload file complete"; } }else{ echo 'please send the right files'; exit; } ?>
1.文件上傳到臨時目錄,腳本執行完以後,臨時文件就會被刪除掉。。(找了很久沒找到臨時文件,哭)。因此用move_uploaded_file 把臨時文件保存到另外一個文件下post
2. $error>0就是上傳出錯,報啥錯就放個參考的地址http://php.net/manual/zh/features.file-upload.errors.phpspa
3.$_FILES["file"] 是個數組,包含'size','name','type','tmp_name'等數據,分別表示上傳的文件大小,名字,類型,臨時文件名。.net
4. file_exists 判斷文件是否存在code
5.mkdir新建目錄。orm
嘿嘿,大概就這些東西了。htm