PHP上传图片实例代码分享

刚入门PHP,趁热打铁,按照自己的思路写了一个上传图片的代码,功能有限制文件大小、自定义存放目录、防止重复提交(利用session记录),返回结果有:上传的图片路径、文件大小(带单位);大概就这些以下是代码及下载地址:

asdfasfasdf

<?php
 session_start();
 ?>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>PHP上传文件</title>
 <style>
 * {margin:0; padding:0; list-style:none;}
 .content {width:400px; height:200px; margin:0 auto; margin-top:60px;

background:#ffd3b6; border:dashed 1px #f90}
 .content h1 { width:400px; height: 30px; line-height:30px; text-align:

center; font-family:"微软雅黑"; font-size:14px; color:#000}
 .content .error {width:300px; height:30px; line-height:30px;

text-align:center; margin:0 auto; color:#f00}
 .content .con {width:340px; height:auto; margin:0 auto; font-size:12px;}
 .content #file { width:280px; height:20px; border:solid 1px #ccc;

background:#fff; margin:10px 0px 6px 0; font-size:12px;}
 .content #send { width:60px; height:22px; border:solid 1px #ccc;

background:#fff; font-size:12px; margin-top:10px;}
 </style>
 </head>

<body>
 <div>
 <h1>文件上传</h1>
 <div>
 <div>
 <?php
 if ($_GET['up']==up) {
 if ($_SESSION['file']==$_GET['irand']) {
 $_size=20000;                    //设置限制文件大小
 $_dir='phone/';                   //文件保存目录
 function size($_size) {
 //判断文件大小是否大于1024bit 如果大于,则将大小取值为KB
 if ($_size>1024*1024) {
 return round($_size/1024/1024,2).' MB';
 }else if ($_size>1024) {
 $_size=$_size/1024;
 return ceil($_size).'KB';
 }else {
 return $_size.' bit';
 }
 }
 //设置上传图片的类型,设置图片上传大小
 $_upfiles = array('image/jpeg','image/pjpeg','image/png','image/x-png','image/gif');
 if (is_array($_upfiles)) {
 if (!in_array($_FILES['userfile']['type'],$_upfiles)) {
 exit('请上传格式为:jpg,png,gif的文件<br /><a href="upload.php">返回</a>');
 }
 }
 if ($_FILES['userfile']['size']>$_size) {
 exit('上传文件不能超过:'.size($_size));
 }
 if ($_FILES['userfile']['error']>0) {
 switch ($_FILES['userfile']['error']) {
 case 1: echo '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
 break;
 case 2: echo '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
 break;
 case 3: echo '文件只有部分被上传';
 break;
 case 4: echo '没有文件被上传';
 break;
 case 6: echo '找不到临时文件夹';
 break;
 case 7: echo '文件写入失败';
 break;
 }
 exit;
 }
 //获取文件扩展名
 if (!is_dir($_dir)) {
 mkdir($_dir,0700);
 }
 $_rand=mt_rand(0,100000);
 $_n=explode('.',$_FILES['userfile']['name']);  //将文件名分割
 $_file_len=count($_n);         //返回数组长度
 $_name=$_dir.time().'_'.$_rand.'.'.$_n[$_file_len-1];

if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
 if (!@move_uploaded_file($_FILES['userfile']['tmp_name'],$_name)) {
 exit('文件移动失败');
 }else {
 echo '文件上传成功<br />';
 echo '文件路径:'.$_name.'<br />';
 echo '文件大小:'.size(filesize($_name));
 echo '<br /><a href="upload.php">返回继续上传</a>';
 }
 }else {
 exit('上传的临时文件不存在,无法将文件移动到指定文件夹');
 }
 //销毁session变量,有几种方法
 //第一种,销毁所有session变量:session_destroy();
 //第二种:销毁单个如:$_SESSION['file']=''
 session_destroy();
 exit;
 }else {
 exit('您已经提交过了,不能重复提交<br /><a href="upload.php">返回</a>');
 }
 }
 ?>
 </div>
 <?php $_irand=mt_rand(0,1000000); $_SESSION['file']=$_irand; ?>
 <form action="?up=up&irand=<?php echo $_irand; ?>" method="post" enctype="multipart/form-data">
 <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
 <input type="file" name="userfile" id="file"/><br />
 <input type="submit" name="send" value=" 点击上传 " id="send"/>
 </form>
 </div>
 </div>
 </body>
 </html>

百度网盘下载

分享到:
标签:PHP,PHP图片上传,
^_^ 亲爱的客官,如果您觉得本文对您有好处,请移动你的鼠标点点下面的广告或上面的或右上角的,非常感谢~ ^_^

报歉!评论已关闭.