• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

如何重新定义上传文件名称的实例详解

php 搞代码 4年前 (2022-01-22) 40次浏览 已收录 0个评论

在上传文件时需要指定上传文件路径,但是,如果面对大量用户上传的不同文件,难免会有重名的可能,这样就会造成文件替换,从而导致文件丢失,所以对上传文件的名称进行重新定义是非常重要的。本章就带你了解一下。怎么定义上传文件的名称呢?

首先我们通过strstr()函数对上传文件的名称进行截取,获取上传文件的后缀。

然后通过time()函数获取系统当前时间戳,重新定义上传文件的名称

在利用move_uploaded_file()函数实现文件上传。

在执行文件上传之前,为了防止潜在的攻击,对原本不能通过脚本交互的文件进行非法管理,应利用is_uploaded_file()函数判断指定的文件是否通过HTTP POST上传的,如果是,则返回一个true。

is_uploaded_file()函数

is_uploaded_file()函数 判断指定的文件是否通过HTTP POST上传的,其语法如下:

is_uploaded_file(filename)

参数 filename 必须指定类似于$_FILES['filename']['tmp_name']的变量,不可以使用从客户端上传的文件名$_FILES['filename']['name']

通过is_uploaded_file()函数对上传文件进行判断,可以确保恶意用户无法欺骗脚本去访问不能访问的文件,如/etc/passwd。

move_uploaded_file()函数

move_uploaded_file()函数将文件上传到服务器中指定的位置。如果成功返回true。否则返回false,语法如下

move_uploaded_file(filename,destination)

参数filename指定上传文件的临时文件名,即$_FILES[tmp_name];参数destination指文件上传后保存的新路径和名称。如果参数filename不是合法的上传文件,则不会出现任何操作,

move_uploaded_file() 将返回false;如果参数filename是合法的上传文件,但出于某些原因无法移动,则也不会出现任何的操作,move_uploaded_file()将返回False,此外还会发出一条警告信息。

最后使用rand函数,使用它随机生成的随机整数作为上传文件的新名称。

应用示例

本示例重新定义上传文件的名称,选择要上传文件的名称,单击“上传”按钮,文件将上传到程序中指定的本地路径下的upfile文件夹中,并重新定义文件名称。

本示例的关键代码如下:

<?PHPheader("content-type:text/html;charset=utf-8");if(!empty($_FILES[up_picture][name])<strong style="color:transparent">¥本文来源gaodai#ma#com搞@@代~&码网^</strong><small>搞gaodaima代码</small>){                                       //判断上传文件是否为空    if($_FILES['up_picture']['error']>0){                                    //判断文件是否可以上传到服务器        echo "上传错误";        switch($_FILES['up_picture']['error']){            case 1:                echo "上传文件大小超出配置文件规定值";                break;            case 2:                echo "上传文件大小超出表单中约定值";                break;            case 3:                echo "上传文件不全";                break;            case 4:                echo "没有上传文件";                break;        }    }else{        if(!is_dir("./upfile/")){                                           //判断指定目录是否存在            mkdir("./upfile/");                                             //创建目录        }        $path='./upfile/'.time().strstr($_FILES['up_picture']['name'],'.');//定义文件名称和存储位置        if(is_uploaded_file($_FILES['up_picture']['tmp_name'])){           //判断是否通过HTTP POST上传的            if(!move_uploaded_file($_FILES['up_picture']['tmp_name'],$path)){       //执行上传                echo "上传失败";            }else{                echo "文件".time().$_FILES['up_picture']['name']."上传成功,大小为:".$_FILES['up_picture']['size'];            }        }else{            echo "上传文件".$_FILES['up_picture']['name']."不合法!";        }    }}?>

定义上传文件的名称在上传文件程序中必是不可少的一个功能,通过他可以避免重名文件被替换,单着可能会导致存在很多相同内容的文件。更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何重新定义上传文件名称的实例详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址