When uploading files, you need to specify the upload file path. However, if you face different files uploaded by a large number of users, it is inevitable that there will be the possibility of duplicate names. This will cause file replacement, resulting in file loss, so the upload file Name redefinition is very important. This chapter will take you through it. How to define the name of the uploaded file?
First we use the strstr() function to intercept the name of the uploaded file and obtain the suffix of the uploaded file.
Then obtain the current timestamp of the system through the time() function and redefine the name of the uploaded file
Use the move_uploaded_file() function to upload the file.
Before executing file upload, in order to prevent potential attacks and illegal management of files that cannot be interacted with through scripts, the is_uploaded_file() function should be used to determine whether the specified file was uploaded through HTTP POST. If so, then returns a true.
is_uploaded_file() function
is_uploaded_file() function determines whether the specified file is uploaded through HTTP POST. Its syntax is as follows:
is_uploaded_file(filename)
Parameter filename A variable similar to $_FILES['filename']['tmp_name'] must be specified. The file name uploaded from the client cannot be used.$_FILES['filename']['name']
Using the is_uploaded_file() function to judge uploaded files can ensure that malicious users cannot trick scripts into accessing inaccessible files, such as /etc/passwd.
move_uploaded_file() function
The move_uploaded_file() function uploads a file to the specified location in the server. Returns true if successful. Otherwise, return false, and the syntax is as follows
move_uploaded_file(filename,destination)
The parameter filename specifies the temporary file name of the uploaded file, that is, $_FILES[tmp_name]; the parameter destination refers to the new path and name saved after the file is uploaded. If the parameter filename is not a legal uploaded file, no operation will occur,
move_uploaded_file() will return false; if the parameter filename is a legal uploaded file, but for If it cannot be moved for some reason, no operation will occur. move_uploaded_file() will return False and a warning message will be issued.
Finally use the rand function and use the random integer it randomly generates as the new name of the uploaded file.
Application Example
This example redefines the name of the uploaded file, select the name of the file to be uploaded, and click "Upload" button, the file will be uploaded to the upfile folder under the local path specified in the program, and the file name will be redefined.
##The key code for this example is as follows:
<?PHP header("content-type:text/html;charset=utf-8"); if(!empty($_FILES[up_picture][name])){ //判断上传文件是否为空 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']."不合法!"; } } } ?>
Defining the name of the uploaded file must be an indispensable function in the file upload program. Through it, it can avoid the replacement of files with the same name, which may lead to the existence of many files with the same content. For more information, please pay attention to PHP file processing topic
[Related article recommendations]PHP file upload-detailed explanation of the use of the move_uploaded_file() function
The above is the detailed content of Detailed example of how to redefine the name of an uploaded file. For more information, please follow other related articles on the PHP Chinese website!