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

<?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;

/**
 * [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>
时间: 2024-08-29 15:16:26

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

从web编辑器 UEditor 中单独提取图片上传,包含多图片单图片上传以及在线涂鸦功能

UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码.(抄的...) UEditor是非常好用的富文本web编辑器,而且全中文API和注释,方便学习和使用.特别是图片上传查看及涂鸦功能极为喜欢,但是有很多情况我们并不需要Web编辑器,而只需要图片上传.那么问题来了,提取图片上传哪家强..... 网上有很多图片上传的控件.插件.但都不是那么的完美,有的只有一张图片上传不包含批量上传,有的没有图片查看

megapix-image插件 使用Canvas压缩图片上传 解决手机端图片上传功能的问题

最近在弄微信端的公众号.订阅号的相关功能,发现原本网页上用的uploadify图片上传功能到手机端有的手机类型上就不能用了,比如iphone,至于为啥我想应该不用多说了吧(uploadify使用flash实现上传的): 经过研究找到了一个手机端比较相对比较好用的插件实现图片上传,那就是megapix-image插件,比uploadify还是好用多了,下面就来上实例吧: html页面: <html> <body> <input type="file" cap

一步一步教你用PHP+MySql搭建网站 No.5 图片上传、故事删除

上篇文章中讲到,story.php中的表单提交之后的页面是story_submit.php,我们就看一下story_submit.php是如何完成文章的发表的 老样子,先上代码: <?php # add / modify story record include_once('include_fns.php'); $handle = db_connect(); $headline = $_REQUEST['headline']; $page = $_REQUEST['page']; $time =

iOS:图片上传时两种图片压缩方式的比较

上传图片不全面的想法:把图片保存到本地,然后把图片的路径上传到服务器,最后又由服务器把路径返回,这种方式不具有扩展性,如果用户换了手机,那么新手机的沙盒中就没有服务器返回的图片路径了,此时就无法获取之前已经上传了的头像了,在项目中明显的不可行. 上传图片的正确方式:上传头像到服务器一般是将图片NSData上传到服务器,服务器返回一个图片NSString地址,之后再将NSString的路径转为url并通过url请求去更新用户头像(用户头像此时更新的便是NSString) 代码为: AFHTTPRe

JS判断图片上传时文件大小和图片尺寸

如何读取图片的size: 首先,原生input file控件有个files属性,该属性是一个数组.数组中的元素有以下属性:lastModifiedDate,name,size,type,webkitRelativePath,如图: 这样的话,我们就可以检测到size.(这里的size是字节大小) 1 var fileData = file.files[0]; 2 var size = fileData.size; //注意,这里读到的是字节数 3 var isAllow = false; 4 v

dnmp(docker的lnmp)安装WordPress之后图片上传问题 问题:图片上传大小问题解决和 报错413 Request Entity Too Large

首先是提示超过图片尺寸和大小, 最后发现都是图片大小的问题, 需要修改php的最大上传size 修改之后查看php配置  已经生效  但是还是报错, 提示返回不是合法的json,  查看控制台, 报错是问题:413 Request Entity Too Large  发现是Nginx的配置, 有盖配置. dnmp环境  php配置  直接重新 docker-compose up --build  就可以生效 nginx 需要 停止 删除 重新build才可以, 注意, 停止删除容器, build

前端模拟 图片上传----&gt;&gt;通过选取的图片获取其路径&lt;&lt;------

<head> <meta charset="UTF-8"> <title>Title</title> <style> div { position: relative; overflow: hidden; background: #EEE; width: 100%; height: 667px; } #bg, #mask-bg { position: absolute; width: 100%; height: 667px;

图片上传封装类【包括图片上传和缩略图上传】.NET

原文发布时间为:2009-08-30 -- 来源于本人的百度文章 [由搬家工具导入] #region 上传图片及上传缩略图    public class UpFile : System.Web.UI.Page    {         /// <summary>        /// 上传图片jpg/jpeg/gif/bmp格式        /// 创建:2009-06-09        /// 作者:HandBoy        /// </summary>        

微信端调取相册和摄像头,实现图片上传,并上传到本地服务器

在微信公众号网页开发时,遇到了图片上传的问题,查看了微信的开发者文档,里面的资料比较全.接着我们看一下整个的流程 1.config权限配置 $.ajax({ url:'wx_getConfig', type:'get', dataType:'json', async:false, success:function(data){ var appId = data[0].appId; var timestamp = data[0].timestamp; var nonceStr = data[0].