关闭

PHP上传原理及应用

33人阅读 评论(0) 收藏 举报
分类:

1、FORM标签enctype属性

 

 

表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,

这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;

只有使用了multipart/form-data,才能完整的传递文件数据

 

<form enctype="multipart/form-data" method="post" name="upform">

 

input标签 type 属性中的  "file"

 

<input name="upfile" type="file">

 

 

2、$_FILES 系统函数

 

 

$_FILES['myFile']['name']   客户端文件的原名称。

$_FILES['myFile']['type']   文件的 MIME 类型,例如"image/gif"。

$_FILES['myFile']['size']   已上传文件的大小,单位为字节。

$_FILES['myFile']['tmp_name']   储存的临时文件名,一般是系统默认。

$_FILES['myFile']['error']   该文件上传相关的错误代码。

 

 

--------------type-----------------

 

image/jpg

image/jpeg

image/png

image/pjpeg

image/gif

image/bmp

image/x-png

application/x-zip-compressed

 

 

-------------error-----------------

 

0; 文件上传成功。

1; 超过了文件大小php.ini中。

2;   超过了文件大小

      MAX_FILE_SIZE 选项指定的值。

3; 文件只有部分被上传。

4; 没有文件被上传。

5; 上传文件大小为0。

 

 

3、move_uploaded_file函数


上传后移动文件到目标位置的函数

 

move_uploaded_file(临时文件,目标位置和文件名);

 

4、is_uploaded_file 函数

 

判断上传MIME类型的文件函数

is_uploaded_file (MIME)

 

  1. <?php  
  2.     header("content-type:text/html; charset=utf-8");  
  3.     require_once('DBI/DBConn.php');  
  4.       
  5.     $id = $_POST['id'];  
  6.       
  7.     $gotoPage = ($id=='new') ? "./products.php":"./products.php?id=".$id;  
  8.       
  9.     $upload_file=$_FILES["upload_file"]["name"];//获取文件名   
  10.     $upload_tmp_file=$_FILES["upload_file"]["tmp_name"];//获取临时文件名   
  11.     $upload_filetype=$_FILES["upload_file"]["type"];//获取文件类型   
  12.     $upload_status=$_FILES["upload_file"]["error"]; //获取文件出错情况   
  13.     $upload_dir="../image/upload/"//指定文件存储路径   
  14.        
  15.     // 分析文件出错情况并给出提示  
  16.       
  17.     $alertInfo = "";  
  18.     switch($upload_status)   
  19.     {   
  20.         case 0:$alertInfo =  ""break;   
  21.         case 1:$alertInfo =  "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。"break;   
  22.         case 2:$alertInfo =  "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。"break;   
  23.         case 3:$alertInfo =  "文件只有部分被上传。"break;   
  24.         case 4:$alertInfo =  "没有文件被上传。"break;   
  25.         case 6:$alertInfo =  "没有找到临时文件目录。"break;   
  26.         case 7:$alertInfo =  "文件写入失败。"break;   
  27.     }   
  28.     if($upload_status != 0)  
  29.     {  
  30.         echo "<mce:script lang='javascript'><!--  
  31. alert('$alertInfo'); window.location='".$gotoPage."'  
  32. // --></mce:script>";  
  33.     }  
  34.           
  35.     // 循环排除替换文件名中的非法字符    
  36.     $errorchar = array ("-"," ","~","!","@","#","$","%","^","&","(",")","+",",","(",")","?","!","“","”","《","》",":",";","——"); //定义非法字符集   
  37.     foreach($errorchar as $char)   
  38.     {   
  39.         if(strpos($upload_file,$char))    
  40.         {   
  41.             $upload_file = str_replace($char,"_",$upload_file);   
  42.             echo "文件名中含有非法字符!已经替换为/"_/"!";   
  43.         }   
  44.     }  
  45.     // 定义文件最终的存储路径和名称  
  46.     $upload_path = $upload_dir.$upload_file;    
  47.     $gbk_upload_path = iconv('utf-8' , 'gbk' ,$upload_path);   
  48.       
  49.     if(is_uploaded_file($upload_tmp_file) )   
  50.     {   
  51.         // 检查是否有相同文件存在   
  52.         if(file_exists($gbk_upload_path))   
  53.         {  
  54.             echo "<mce:script lang='javascript'><!--  
  55. alert('同名文件已经存在,请修改你要上传的文件名'); window.location='".$gotoPage."'  
  56. // --></mce:script>";  
  57.         }  
  58.         else if(move_uploaded_file($upload_tmp_file,$gbk_upload_path))   
  59.         {  
  60.               
  61.             $desc = $_POST['desc'];  
  62.           
  63.             $img_path = $upload_file;  
  64.             $sql = ($id == 'new') ? "INSERT INTO products (name,img) VALUES ('$name', '$img_path')":  
  65.                 "UPDATE products SET name ='$desc',img = '$img_path' WHERE id=$id";  
  66.                   
  67.             $result =mysql_query($sqlor die;  
  68.               
  69.             //把文件从文件临时目录移动到上传目录   
  70.             if(mysql_affected_rows() < 1)  
  71.             {  
  72.                 echo "<mce:script lang='javascript'><!--  
  73. alert('文件已经成功上传,但数据插入出现错误'); window.location='".$gotoPage."'  
  74. // --></mce:script>";  
  75.             }  
  76.             else  
  77.             {   //把文件从文件临时目录移动到上传目录   
  78.                 echo "<mce:script lang='javascript'><!--  
  79. alert('文件已经成功上传'); window.location='".$gotoPage."'  
  80. // --></mce:script>";  
  81.             }     
  82.         }  
  83.         else   
  84.         {  
  85.             echo "<mce:script lang='javascript'><!--  
  86. alert('文件上传失败'); window.location='".$gotoPage."'  
  87. // --></mce:script>";  
  88.         }  
  89.           
  90.     }  
  91. ?>  
 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:33次
    • 积分:10
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档
    阅读排行
    评论排行