首页 后端开发 php教程 如何重新定义上传文件名称的实例详解

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

May 02, 2017 am 11:28 AM

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

首先我们通过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']

1486188938564607.gif通过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文件夹中,并重新定义文件名称。

0.jpg

本示例的关键代码如下:

<?PHP
header("content-type:text/html;charset=utf-8");
if(!empty($_FILES[up_picture][name])){                                       //判断上传文件是否为空
    if($_FILES[&#39;up_picture&#39;][&#39;error&#39;]>0){                                    //判断文件是否可以上传到服务器
        echo "上传错误";
        switch($_FILES[&#39;up_picture&#39;][&#39;error&#39;]){
            case 1:
                echo "上传文件大小超出配置文件规定值";
                break;
            case 2:
                echo "上传文件大小超出表单中约定值";
                break;
            case 3:
                echo "上传文件不全";
                break;
            case 4:
                echo "没有上传文件";
                break;
        }
    }else{
        if(!is_dir("./upfile/")){                                           //判断指定目录是否存在
            mkdir("./upfile/");                                             //创建目录
        }
        $path=&#39;./upfile/&#39;.time().strstr($_FILES[&#39;up_picture&#39;][&#39;name&#39;],&#39;.&#39;);//定义文件名称和存储位置
        if(is_uploaded_file($_FILES[&#39;up_picture&#39;][&#39;tmp_name&#39;])){           //判断是否通过HTTP POST上传的
            if(!move_uploaded_file($_FILES[&#39;up_picture&#39;][&#39;tmp_name&#39;],$path)){       //执行上传
                echo "上传失败";
            }else{
                echo "文件".time().$_FILES[&#39;up_picture&#39;][&#39;name&#39;]."上传成功,大小为:".$_FILES[&#39;up_picture&#39;][&#39;size&#39;];
            }
        }else{
            echo "上传文件".$_FILES[&#39;up_picture&#39;][&#39;name&#39;]."不合法!";
        }
    }
}
?>
登录后复制

1486188938564607.gif定义上传文件的名称在上传文件程序中必是不可少的一个功能,通过他可以避免重名文件被替换,单着可能会导致存在很多相同内容的文件。更多请关注PHP文件处理专题

【相关文章推荐】

PHP文件上传-move_uploaded_file()函数的使用详解

以上是如何重新定义上传文件名称的实例详解的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP应用:使用当前日期作为文件名 PHP应用:使用当前日期作为文件名 Jun 20, 2023 am 09:33 AM

在PHP应用中,我们有时需要使用当前日期作为文件名来保存或上传文件。虽然可以手动输入日期,但使用当前日期作为文件名可以更方便、快捷和准确。在PHP中,我们可以使用date()函数来获取当前日期。该函数的使用方法为:date(format,timestamp);其中,format为日期格式字符串,timestamp为表示日期和时间的时间戳,不传递该参数将使用

PHP中文文件名乱码问题处理技巧 PHP中文文件名乱码问题处理技巧 Feb 27, 2024 pm 02:18 PM

PHP中文文件名乱码问题处理技巧在开发过程中,经常会遇到处理中文文件名乱码的问题,尤其是在处理用户上传的文件时。在PHP中,如何正确处理文件名乱码是一个比较常见且重要的问题。本文将介绍一些处理中文文件名乱码问题的技巧,并提供具体的代码示例,帮助读者更好地应对这个挑战。问题描述当用户上传文件时,有时候会出现中文文件名乱码的情况。这是因为不同的操作系统和浏览器对

Java如何遍历文件夹并获取所有文件名 Java如何遍历文件夹并获取所有文件名 Mar 29, 2024 pm 01:24 PM

Java是一种流行的编程语言,具有强大的文件处理功能。在Java中,遍历文件夹并获取所有文件名是一种常见的操作,可以帮助我们快速定位和处理特定目录下的文件。本文将介绍如何在Java中实现遍历文件夹并获取所有文件名的方法,并提供具体的代码示例。1.使用递归方法遍历文件夹我们可以使用递归方法来遍历文件夹,递归方法是一种自身调用自身的方式,可以有效地遍历文件夹中

win10文件名太长不能删除的处理操作步骤 win10文件名太长不能删除的处理操作步骤 Mar 27, 2024 pm 04:41 PM

1、首先找到自己需要进行删除的文件或文件夹,由于文件名太长,在进行删除操作的时候系统会提示,【由于文件名太长,无法删除文件或目录】;如图所示:2、此时快捷键【Win+R】打开运行,输入【cmd】,确定后打开命令提示符;如图所示:3、先切换到文件所在的盘,我的在D,输入【D:】,然后再切换到文件所在文件夹,我的在【1】,输入【cd1】,再输入【dir】即可看到该目录下的所有文件,我的这个目录下就只有一个需要删除的文件;如图所示:4、此时输入【del*.png】,即把该目录里面所有以png为后缀的文

如何批量修改文件名 如何批量修改文件名 Nov 09, 2023 am 10:05 AM

批量修改文件名的方法有使用mv命令、使用rename命令、使用find命令结合mv命令、使用mmv命令等。详细介绍:1、使用mv命令,mv命令是Linux系统中用于移动文件或重命名文件的命令,通过mv命令,可以将一个文件移动到另一个位置,并且可以同时修改文件名;2、使用rename命令,rename命令是一个强大的批量文件重命名工具,它可以通过正则表达式来匹配和替换文件名等等。

使用path/filepath.Split函数将路径拆分为目录和文件名两部分 使用path/filepath.Split函数将路径拆分为目录和文件名两部分 Jul 25, 2023 pm 05:57 PM

使用path/filepath.Split函数将路径拆分为目录和文件名两部分在开发程序或处理文件时,经常需要将路径拆分为目录和文件名两部分进行操作。在Go语言中,可以使用path/filepath包中的Split函数来实现这一功能。本文将介绍Split函数的用法,并给出代码示例。Split函数的定义如下:funcSplit(pathstring)(di

win7系统文件名变成蓝色怎么办 win7系统文件名变成蓝色怎么办 Jul 20, 2023 pm 11:57 PM

win7系统文件名变成蓝色怎么办?win7系统是当前最多人使用的一款Windows系统,拥有非常悠久的发展历史,深受用户们的喜爱。不过win7系统也有着大大小小的问题,就有不少小伙伴在使用win7系统的时候,会发现电脑的文件名字变成蓝色的,新建的其他文件夹也会变成蓝色,这是什么情况又要如何解决呢?下面就由小编为大家带来win7系统文件名变成蓝色恢复方法。win7系统文件名变成蓝色恢复方法1.首先右键点击出现蓝色文件名的磁盘,打开属性。2.在属性窗口中找到压缩此驱动器以节约磁盘空间的选项,将其去掉

Win11找不到文件请确定文件名是否正确怎么解决?详情 Win11找不到文件请确定文件名是否正确怎么解决?详情 Feb 01, 2024 pm 04:09 PM

我们在使用win11电脑的时候会直接的搜索文件名来让自己快速的找到自己想要的资料等等,不过也有不少的用户们在搜索的时候发现电脑弹出请确定文件名是否正确的弹框,那么这要怎么办?用户们可以直接的进入到运行窗口下的HKEY_CURRENT_USER路径来进行设置,下面就让本站来为用户们来仔细的介绍一下Win11找不到文件请确定文件名是否正确怎么解决吧。Win11找不到文件请确定文件名是否正确怎么解决?详情方法一、1、在键盘上同时按下Win+R快捷键,打开运行窗口。3、在注册表编辑器中展开HKEY_CU

See all articles