Home >Backend Development >PHP Tutorial >PHP implements image uploading and replacement operations_php skills
First create two files: change.html and change.php
The form code of the change.html file is as follows:
<html> <head> <title>change file example.</title> <meta charset="UTF-8"> </head> <body> <form method="post" action="changefile.php" enctype="multipart/form-data"> <table border=0 cellspacing=0 cellpadding=0 align=center width="100%"> <tr> <td width=55 height=20 align="center"> <input type="hidden" name="MAX_FILE_SIZE" value="2000000" /> 文件: </td> <td> <input name="file" type="file" /> <input type="submit" name="submit" value="submit" /> </td> </tr> </table> </form> </body> </html>
There are a few things to pay attention to here. First, look at this sentence1a123767db84ac117fb1eb1f208cd298, Here We use the POST method, and some browsers also support the PUT method. Of course, this requires modifying the script, which I do not recommend. enctype="multipart/form-data must be set in the form, so that the server knows that the uploaded file contains regular form information. Remember, this must be set. In addition, a hidden field is needed to restrict uploads The maximum length of the file : cf0d3d6ea3f6050b67efec7d0a3cf718, here the name must be set to MAX_FILE_SIZE, and its value is the maximum length of the uploaded file, in units of B, here I limit it to 2M. Look at this sentence again: f1c3c26395f0f952a2084fb0b034997b, type="file" indicates the file type. This completes a basic file upload interface. Next, let’s talk about how to use PHP to process uploaded files. In addition, the maximum length of uploaded files set in your php.ini may affect your actual upload. Please base it on the actual situation. Modification, in addition, the PHP upload is first uploaded to the temporary directory, and then moved to the specified directory; the temporary directory can be modified as needed, or the default value can be used...
The following is the code for the form submission change.php file. Let’s take a look at what this file has:
<?php header("content-type:text/html;charset=utf-8"); /** * @param string $oldfile 需要更换的文件名(包含具体路径名) */ function changeFile($oldfile){ $newfile = $_FILES['file']['name'];//获取上传文件名 $fileclass = substr(strrchr($newfile, '.'), 1);//获取上传文件扩展名,做判断用 $type = array("jpg", "gif", "bmp", "jpeg", "png");//设置允许上传文件的类型 if(in_array(strtolower($fileclass), $type)){ if(file_exists($oldfile)){ unlink($oldfile); } if(is_uploaded_file($_FILES['file']['tmp_name'])){//必须通过 PHP 的 HTTP POST 上传机制所上传的 if(move_uploaded_file($_FILES['file']['tmp_name'], $oldfile)){ //输出图片预览 echo "<center>您的文件已经上传完毕 上传图片预览: </center><br><center><img src='$oldfile'></center>"; } }else{ echo "<center>上传失败,文件大于2M,请重新上传!</center>"; } }else{ $text = implode(",", $type); echo "<center>您只能上传以下类型文件:", $text, "</center><br>"; // echo "<script>alert('您只能上传以下类型文件:$text')</script>"; } } changeFile("./files/1.png");
substr(strrchr($newfile, '.'), 1) first. What is the role of the strrchar() function? Let me give you an example to let you know. For example, for a picture file pic.jpg, we use strrchar() handles, strrchr(pic.jpg,'.'), it will return .jpg, do you understand? This function returns the string after the last occurrence of the specified character in the string. With substr(), we can get jpg, so that we can get the file extension to determine whether the uploaded file conforms to the specified format. This program puts the specified format in an array, which can be added as needed during actual use.
Next, we call the function to determine the file type and convert it into lowercase
strtolower($_FILES['file']['name']), There is a very key thing here $_FILES, this It is a super global array that saves the form data that needs to be processed. If register_globals is turned on, it can also be accessed directly, but this is unsafe. Look at the upload interface just now 0eb7cc3103674aa8bfd03400259c2b86, based on this form name, we can get a lot of information:
$_FILES['
file']['name']-- Get file name
$_FILES['
file']['tmp_name']--get the temporary storage location
$_FILES['
file']['size']--get the file size
$_FILES['
file']['type']--Get the file MIME type
After getting this information, you can easily determine the information of the file. Isn't it very convenient? ^_^, there are some functions that need to be understood next, file_exists()--determine whether the specified directory exists. If it does not exist, of course we cannot upload it (it seems like nonsense!), is_uploaded_file--determine whether the file has been uploaded through HTTP POST, move_uploaded_file --Move the uploaded file to the specified directory. If the upload is successful, we will output the preview, otherwise the output upload will fail...