PHP文件上传和文件操作案例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP文件上传和文件操作案例相关的知识,希望对你有一定的参考价值。

<?php
/*
 *文件配置变量$dirname是目录名称
 */
session_start();
$dirname = ‘upload‘;
$fileClass = new fileClass($dirname);
$fileClass -> fileCMM();/*文件重命名操作*/
$fileClass -> fileDelete();/*文件删除操作*/
?>
<!DOCTYPE html>
<html>
<head>
<mate charset="utf-8"/>
<title>php文件上传操作</title>

<style>

  body{font-size:150%;margin:0px;padding:0px;background-color:#FFEBCD;}
  .div-top-box{border:solid 1px #008080;width:99.8%;height:100%;background-color:#008080;margin-bottom:10px;}
  h1{text-align:center;}
  input{font-size:150%;}
  .table_top{border-style:solid;border-width:4px 4px 2px 4px;border-color:#708090;padding:60px 10px;width:99%;background-color:#5F9EA0;border-radius:20px;margin:0px auto;}
  .table_box{width:98%;margin:0px auto;text-align:center;}
  .trColor{background-color:#5F9EA0;padding:10px 5px;border:solid 1px #000;}
  .divButton{width:100%;height:200px;border:solid 0px red;background-color:#008080;margin-top:20px;}
  .message_box{padding:20px;border-style:solid;border-width:0px 4px 4px 4px;border-color:#708090;background-color:#5F9EA0;margin:0px 4px;border-radius:20px;}
  .text-color-red-bold{color:red;font-weight:bold;}
  .text-color-red{color:red;}
  .text-color-top{color:#00008B;font-weight:bold;}
  .text-button{float:right;margin:130px 50px 0px 0px;}
  .img{padding:60px 0px 0px 0px;}
  .submit{border-radius:20px;width:300px;height:100px;background-color:#FF4500;}
  .submit:hover{background-color:#FF8C00;}
  .input-box{background-color:#FFD700;}
</style>
</head>

<body style="font-size:150%;">
<div class="div-top-box">
<h1>文件上传操作界面</h1>
</div>
<!--文件上传操作界面HTML界面-->


<!-- The data encoding type, enctype, MUST be specified as below -->


<form enctype="multipart/form-data" action="" method="POST">

<!-- MAX_FILE_SIZE must precede the file input field -->

  <input type="hidden" name="MAX_FILE_SIZE" value="9000000" />
  
<!-- Name of input element determines name in $_FILES array -->
<table border="0" class="table_top">
<tr>
  <td>&nbsp;</td>
  <td>
   <p class="text-color-red">
    *上传图片格式:jpg、gif、png*
   </p>
  </td>
</tr>
<tr>
  <td><p class="text-color-top">请选择文件上传:</p></td>
  <td><input name="userfile" type="file" value="文件" class="input-box" />
</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr>
  <td></td>
  
<td><input class="submit" type="submit" value="确定上传" />
</td>
</table>

</form>
<!-----文件操作界面完------->



<!--文件上传操作-->

<div class="message_box">
<pre>
<p class="text-color-red-bold">文件上传提示:</p>
<?php
 $fileClass -> fileLoad();/*文件上传操作*/?>
</pre>
</div>
<!--文件上传操作完-->

<?php
/*
 *文件遍历操作,并且循环显示在页面上
 */


$num = 0;

$dir_handle = opendir($dirname);
echo ‘<form action="" method="post">‘;
echo ‘<input type="hidden" name="imgsrc" id="imgsrc" value="" />‘;
echo ‘<input type="hidden" name="imgname" id="imgname" value="" />‘;

echo ‘<table border="0"  class="table_box">‘;

while($file = readdir($dir_handle)){
 
 $dirfile = $dirname.‘/‘.$file;
 
  if(filetype($dirfile)==‘file‘){
 
    $num++;
?>


<script>

 function delete<?php echo $num ?>(){
   if(confirm("你确定要删除该图片吗?")){
    var i = document.getElementById("image<?php echo $num ?>").src;
    document.getElementById("imgsrc").value = i;
     }else{
     event.returnValue = false;
      }
    }
 
    
  function cmm<?php echo $num ?>(){
    var msg = prompt("请输入新文件名(无需输入后缀名):","");
    if(msg != ‘‘ && msg != null){
       document.getElementById("imgname").value = msg;
       var i = document.getElementById("image<?php echo $num ?>").src;
    document.getElementById("imgsrc").value = i;
      }else{
        event.returnValue = false;
      }
     }
 

</script>

<tr>
 <td colspan="2" class="img"><img src="<?php echo $dirfile ?>" width="800px" id="image<?php echo $num ?>"
  />
 </td>
</tr>
<tr class="trColor">
 <td width="50%" class="trColor">文件名:<?php echo $file ?></td>
 <td width="50%" class="trColor">
 图像尺寸:
<?php
 list($width, $height, $type, $attr) = getimagesize($dirfile);
 echo "$width$height";
?>
 </td>
</tr>
<tr>
  <td width="50%" class="trColor">
  文件大小:<?php echo (round((filesize($dirfile)/1024),2)).‘K‘
  ; ?>
  </td>
  <td width="50%" class="trColor">
  上次访问时间:
  <?php
  date_default_timezone_set(‘Asia/shanghai‘);
   echo date("Y-n-j H:i:s", fileatime($dirfile))
  ?>
  </td>
</tr>
<tr>
 <td width="50%" class="trColor">
 <input name="deleteimg" type="submit" value="删除图片" onclick="delete<?php echo $num ?>();" />
 </td>
 <td width="50%" class="trColor"><input name="cmmimg" type="submit" value="重命名" onclick="cmm<?php echo $num ?>();" /></td>
</tr>

<?php
   }
 }
 
 
 echo ‘</table>‘;
 echo ‘</form>‘;
 
closedir($dir_handle);




?>


<div class="divButton">
<?php
 echo ‘<br/>&nbsp;&nbsp;在<b>‘.$dirname.‘</b>目录下的文件共有<b>‘.$num.‘</b>个。‘;
?>
<p class="text-button">版权所有:九天一声啸</p>
</div>
</body>
</html>
<?php
/*
 *文件操作类
 */
 class fileClass{
 
     public $dirName;//目录路径
     
     function __construct($dirName){
        $this->dirName = $dirName;
        if (!file_exists($this->dirName)) {
  if(!mkdir($this->dirName,0777)){
    die("<script>alert(‘创建目录失败!‘)</script>创建目录失败!");
       }
      }
     }
     
     public function fileCMM(){//文件重命名
        function get_extension($file)/*返回文件的后缀名*/
         {
            return pathinfo($file, PATHINFO_EXTENSION);
         }

 if(isset($_POST[‘cmmimg‘])){
    if($_POST[‘cmmimg‘]==‘重命名‘){
       $imgname = $_POST[‘imgname‘];
       $imgname_cmm = $this->dirName . ‘/‘ .$imgname;
       $imgsrc_cmm=basename($_POST[‘imgsrc‘]);
     
  $imgsrc_cmm_1 = $this->dirName . ‘/‘ .$imgsrc_cmm;
     $hzname = get_extension($imgsrc_cmm);
     $imgnewname = $imgname_cmm.‘.‘.$hzname;
  if(!file_exists($imgnewname)){
     if(!rename($imgsrc_cmm_1,$imgnewname)){
       echo "<script>alert(‘重命名失败!‘)</script>";
      }
    }else{
      echo "<script>alert(‘文件名重复,重命名失败!‘)</script>";
        }
       }
      }
 
     }
     
     public function fileDelete(){//文件删除
        if(isset($_POST[‘deleteimg‘])){
   if($_POST[‘deleteimg‘]==‘删除图片‘){
     $imgsrc=basename($_POST[‘imgsrc‘]);
     $imgsrc = $this->dirName . ‘/‘ .$imgsrc;
     if(!unlink($imgsrc)){
       echo "<script>alert(‘删除文件失败!‘)</script>";
     }
    }
  
}
     }
     
     public function fileLoad(){//文件上传
     if(@$_FILES["userfile"]["name"] <> ‘‘){
 switch ($_FILES[‘userfile‘][‘error‘]){
  case 0: echo ‘<script>alert("文件上传成功")</script>‘;
      break;
  case 1: echo ‘<script>alert("上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值")</script>‘;
      break;
  case 2: echo ‘<script>alert("上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值")</script>‘;
      break;

  case 3: echo ‘<script>alert("文件只有部分被上传")</script>‘;
      break;
  case 4: echo ‘<script>alert("没有文件被上传")</script>‘;
      break;
  case 6: echo ‘<script>alert("找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进")</script>‘;
      break;

  case 7: echo ‘<script>alert("文件写入失败")</script>‘;
  
    break;
  }

if ((($_FILES["userfile"]["type"] == "image/gif")
|| ($_FILES["userfile"]["type"] == "image/jpeg")
|| ($_FILES["userfile"]["type"] == "image/png")
|| ($_FILES["userfile"]["type"] == "image/pjpeg"))
&& ($_FILES["userfile"]["size"] < 9000000)){
  if ($_FILES["userfile"]["error"] > 0){
      echo "Return Code: " . $_FILES["userfile"]["error"];
   }else{
      echo "<br/>上传文件: " . $_FILES["userfile"]["name"];
      echo "<br/>文件类型: " . $_FILES["userfile"]["type"];
      echo "<br/>文件大小: " . ($_FILES["userfile"]["size"] / 1024) . " Kb";
      echo "<br/>临时文件: " . $_FILES["userfile"]["tmp_name"];
      echo ‘<br/>‘;
  if (file_exists("upload/" . $_FILES["userfile"]["name"])){
 
      echo ‘提示:文件(‘. $_FILES["userfile"]["name"] . ‘) 己经存在! ‘;
      $fileN = $_FILES["userfile"]["name"];
      echo "<script>var fileN = \"$fileN\";alert(‘提示:文件“‘+fileN+‘”己经存在,上传中止!‘);</script>";
    }else{
      move_uploaded_file($_FILES["userfile"]["tmp_name"],
$this->dirName .‘/‘ .$_FILES["userfile"]["name"]);
      echo "保存位置: " . $this->dirName . ‘/‘. $_FILES["userfile"]["name"];
 
       }
 
          }
            }else{
      echo ‘<script>alert("无效的文件")</script>无效的文件!‘;
    
  }
  }else{
  echo ‘提示:没有文件被上传!‘;
  
}
     }
 
 }
?>
 

 

以上是关于PHP文件上传和文件操作案例的主要内容,如果未能解决你的问题,请参考以下文章

php课程---文件操作及文件上传的代码总结

PHP代码审计学习——文件上传

php之上传小案例,根据时间:月日分创建目录并随机生成文件名

关于PHP上传文件时配置 php.ini 中的 upload_tmp_dir

java Ftp上传创建多层文件的代码片段

php 文件操作和文件上传