单页面实现的图片上传列表改名删除图片同名称顺序排序不同名称不同排序

<?php    
    session_start();
$url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$save_dir="images";
$file_current_dir=dirname(__FILE__).'/'.$save_dir;
$filepath='http://'.$_SERVER['HTTP_HOST'].'/'.$save_dir;
//$filepath=dirname($url).'/'.$save_dir; 这个是支持子目录的
/** * [file_upload 文件上传函数,支持单文件,多文件] * Author: 程威明 * @param string $name input表单中的name * @param string $save_dir 文件保存路径,相对于当前目录 * @param array $allow_suffix 允许上传的文件后缀 * @return array array() { * ["status"]=> 全部上传成功为true,全部上传失败为false,部分成功为成功数量 * ["path"]=>array() {已成功的文件路径} * ["error"]=>array() {失败信息} * } */ function files_upload($name="photo",$filename='file',$save_dir="images",$allow_suffix=array('jpg','jpeg','gif','png'),$random_keys='A') { //如果是单文件上传,改变数组结构 if(!is_array($_FILES[$name]['name'])){ $list = array(); foreach($_FILES[$name] as $k=>$v){ $list[$k] = array($v); } $_FILES[$name] = $list; } $response = array(); $response['status'] = array(); $response['path'] = array(); $response['error'] = array(); //拼接保存目录 $save_dir = './'.trim(trim($save_dir,'.'),'/').'/'; //判断保存目录是否存在 if(!file_exists($save_dir)) { //不存在则创建 if(false==mkdir($save_dir,0777,true)) { $response['status'] = false; $response['error'][] = '文件保存路径错误,路径 "'.$save_dir.'" 创建失败'; } } $num = count($_FILES[$name]['tmp_name']); $success = 0; //循环处理上传 for($i=0;$i <$num;$i++) { //判断是不是post上传 if(!is_uploaded_file($_FILES[$name]['tmp_name'][$i])) { $response['error'][] = '非法上传,文件 "'.$_FILES[$name]['name'][$i].'" 不是post获得的'; continue; } //判断错误 if($_FILES[$name]['error'][$i]>0) { $response['error'][] = '文件 "'.$_FILES[$name]['name'][$i].'" 上传错误,error下标为 "'.$_FILES[$name]['error'][$i].'"'; continue; } //获取文件后缀 $suffix = ltrim(strrchr($_FILES[$name]['name'][$i],'.'),'.'); //判断后缀是否是允许上传的格式 if(!in_array($suffix,$allow_suffix)) { $response['error'][] = 'file "'.$_FILES[$name]['name'][$i].'" types that are not allowed to upload '; continue; } if(empty($_SESSION['array'][$filename])) { $_SESSION['array'][$filename]=array("A"=>"A","B"=>"B","C"=>"C","D"=>"D","E"=>"E",'F'=>"F",'G'=>"G",'H'=>"H",'I'=>"I",'J'=>"J",'K'=>"K"); } $random_keys=array_shift($_SESSION['array'][$filename]); unset($_SESSION['array'][$filename][$random_keys]); //得到上传后文件名 $new_file_name =$filename.$random_keys.'.'.$suffix; //拼接完整路径 $new_path = $save_dir.$new_file_name; //上传文件 把tmp文件移动到保存目录中 if(!move_uploaded_file($_FILES[$name]['tmp_name'][$i],$new_path)) { $response['error'][] = '文件 "'.$_FILES[$name]['name'][$i].'" 从临时文件夹移动到保存目录时发送错误'; continue; } //返回由图片文件路径组成的数组 $response['path'][] =$save_dir.$new_file_name; $success++; } if(0==$success){ $success = false; }elseif($success==$num){ $success = true; } $response['status'] = $success; return $response; } if(empty($_SESSION['filename'])){ $_SESSION['filename']=''; } //文件改名 if(@$_POST['action']=='rename') { $oldname=$_POST['oldname']; //$oldname=str_replace(substr($oldname,strrpos($oldname,'.')),'',$oldname); $oldname=$save_dir."/".$oldname; $newname=$save_dir."/".$_POST['newfilename'].'.'.$_POST['ext']; $result=rename($oldname,$newname); if($result==true){ header('Location: '.$url); } } //文件删除 if(@$_POST['action']=='del') { $result=0; $file = $save_dir."/".$_POST['filename']; echo $file; $result = @unlink($file) or die('dsd');; if ($result == true) { $result=1; } echo $result; } if(@$_POST['action']=='upload'){ $filename=$_POST['filename']; $_SESSION['filename']=$filename; $aa=files_upload('file',$filename,'images',array('jpg','jpeg','gif','png'),$random_keys); if($aa['status']==true){ header('Location: '.$url); } else { echo $aa['error'][0]; } } else { $dir = $file_current_dir; // Open a known directory, and proceed to read its contents if (is_dir($dir)) { if ($dh = opendir($dir)) { $i=0; while (($file = readdir($dh)) !== false) { $size = intval((filesize($dir.'/'.$file)/1000)).'k'; list($filesname,$kzm)=explode(".",$file);//获取扩展名 if($kzm=="gif" or $kzm=="jpg" or $kzm=="JPG" or $kzm=="png") { //文件过滤 ?> filename: <?php echo $file;?> <?php echo $size;?> <img src="<?php echo $filepath.'/'.$file ;?> " width="50px" height="50px"> <?php echo $filepath.'/'.$file;?> <a onclick="return rename('<?php echo $i;?>','<?php echo $file;?>',)" href='#'>rename</a> <form method="post" id="form_<?php echo $i;?>" action="1.php" style="display:none"> <input type="text" name="newfilename" id="newfilename" > <input type="hidden" name="oldname" id="oldname" value="<?php echo $file;?>" > <input type="hidden" name="action" id="action" value="rename"> <input type="hidden" name="ext" id="ext" value="<?php echo $kzm;?>"> <input type="submit" name="submit" value="Submit" /> </form> <a onclick="return deldel('<?php echo $file;?>')" href='#' >del</a> <br> <?php $i++; } } closedir($dh); } } ?> <html> <body> <br> <br> <br> <form action="1.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <label for="file">name</label> <input type="text" name="filename" id="filename" value="<?php echo $_SESSION['filename'];?>"> <input type="hidden" name="action" value="upload"> <br /> <input type="submit" name="submit" value="Submit" /> </form> </body> </html> <?php } ?> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> <script> function rename(formid,filename) { $("#form_"+formid).toggle(); } function deldel(filename) { var del='del'; if(confirm('confirm del')){ $.ajax({ type:'post', url:'<?php echo $url;?>', data: {action:del, filename:filename}, success:function(data){ alert('del success'); location.reload(); }, error:function(){ alert('del fail,check file mod'); } }); } } </script>
原文地址:https://www.cnblogs.com/baker95935/p/7183561.html