PHP上传原理及应用

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)

 

[php]  view plain copy
  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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值