php中文件上传相关的基础知识记录 – 901web前端博客 - 一个90后的前端之路,先学会做人,在学会做事,最后学会分享……

901web前端博客

人生就像一副复杂拼图
每个人总有属於自己的记忆碎片
Theme By 网上下载

联系我

RSS

七月 11, 2014

php中文件上传相关的基础知识记录

在公司制作大冶咪力豆奶网站的时候,导航栏目下面有一个人才招聘的二级菜单,里面有招聘信息和求职中心,我在求职中心做了个应聘的表单,提交到后台可以查看相关应聘者的信息,其中这里面有个可以上传附件的文本域,之前在做先锋旅游网站的时候碰到过文件上传的相关问题,那个网站是同事处理的.(该企业网站项目也是用phpcms制作的),于是我就参考了以前的解决方法,但是还是遇到了一些小问题.就是文件上传的部分在后台一直看不到相关的信息,即没有上传成功.记得当时是周五,我下午下班的时候最后一个走的,还是没有找到原因.(一些表单中该注意的,或者添加的相关信息也都弄了),晚上也没怎么睡好,第二天周末我一个人来到公司,继续查找相关的问,我将前台提交的数据都打印出来看下,其他的信息都能够正确的打印出来,就是上传附件的那个一直为空,于是我就继续对应查找相关的字段是否有问题,结果我将$_FILES['name']打印出来看下,却显示1,上网查找结果发现了问题,(注意修改php.ini 中 upload_max_filesize的文件限制大小)就是我的本地phpstudy中的配置文件php.ini中的upload_max_filesize文件限制了大小2M,修改这个值,保存后重新开启服务器即可.当时感觉到心情好了许多,以后遇到问题还是要多尝试,多打印调试.程序就是慢慢调试出来的.(遇到问题,解决问题,享受解决问题带来的快乐,~~~)

1.文件上传前台html页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

    <head>

        <!-- 此行定义字符集,在使用汉字的国家,字符集通常有 gb2312,utf-8两种字符集,设置不对会导致页面中文乱码

                 因为我的编辑器是utf-8的,所以这里我定义字符集为utf-8。如果你的字符集是gb2312可以修改charset值 -->

        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

        <!-- 此行多是IE浏览器不兼容导致的,现在IE6,IE7使用的人数不多了,大多数可以忽略 -->

        <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

        <!-- 定义文档标题 -->

        <title>PHP上传实例</title>

        <!-- 加入js脚本,简单的前端判断,防止没有选择上传文件就点击提交 -->

        <script type="text/javascript">    

            // 当页面加载完后执行里边的函数体

              // 因为页面的加载顺序是自上到下,否则你把JS移到页脚也可以

            window.onload = function(){

                // 给上传按钮添加鼠标单击事件

                document.forms[0].elements[1].onclick = function(){

                    // 判断要上传的文件名是否为空

                    if( document.forms[0].upfile.value == '' ){

                        // 如果是空则弹出警告

                        alert('请先选择文件');    

                        // 结束脚本运行

                        return false;

                    }

                    // 如果文件不为空则上传文件

                    document.forms[0].submit();

                }        

            }

        </script>

    </head>

    <body>

       <div align="center" style="width:60%; height:300px; font-size:13px;margin:0 auto;">
		<h3>上传图片预览</h3>

			<form name="frm" action="upload.php" method="post" enctype="multipart/form-data">
			<font style="letter-spacing:1px" color="#FF0000">*只允许上传jpg|png|bmp|pjpeg|gif格式的图片</font>
			<br/><br/>
			请选择图片:
			 <input name='upfile' type='file'/>
			 <input name="btn" type="submit" value="上传" /><br />
			</form>

		</div>

    </body>

</html>

2.后台php处理页面相关代码:

<?php
//全局变量
$arrType=array('image/jpg','image/gif','image/png','image/bmp','image/pjpeg','image/jpeg');

$max_size='1024000000';      // 最大文件限制(单位:byte)
$upfile='./uploadimage'; //图片目录路径
$file=$_FILES['upfile'];

//print_r($file);
//exit;

   if($_SERVER['REQUEST_METHOD']=='POST'){ //判断提交方式是否为POST
     if(!is_uploaded_file($file['tmp_name'])){ //判断上传文件是否存在
    echo "<font color='#FF0000'>文件不存在!</font>";
    exit;
    }

  if($file['size']>$max_size){  //判断文件大小是否大于500000字节
    echo "<font color='#FF0000'>上传文件太大!</font>";
    exit;
   } 
  if(!in_array($file['type'],$arrType)){  //判断图片文件的格式
     echo "<font color='#FF0000'>上传文件格式不对!</font>";
     exit;
   }
  if(!file_exists($upfile)){  // 判断存放文件目录是否存在
   mkdir($upfile,0777,true);
   } 
   $imageSize=getimagesize($file['tmp_name']);
   $img=$imageSize[0].'*'.$imageSize[1];
   $fname=$file['name'];
   $ftype=explode('.',$fname);
   $fn=date("YmdHis");
   $picName=$upfile."/ $fn".$fname;

   //echo  $picName;
   //exit;

   if(file_exists($picName)){
    echo "<font color='#FF0000'>同文件名已存在!</font>";
    exit;
     }
   if(!move_uploaded_file($file['tmp_name'],$picName)){  
    echo "<font color='#FF0000'>移动文件出错!</font>";
    exit;
    }
   else{
    echo "<font color='#FF0000'>图片文件上传成功!</font><br/>";
    echo "<font color='#0000FF'>图片大小:$img</font><br/>";
    echo "图片预览:<br><div style='border:#F00 1px solid; width:$imageSize[0];height:$imageSize[1]'>
    <img src=\"".$picName."\">图片文件名称:$fn$fname</div>";
    }
      }
?>

相关文章

返回