Home  >  Article  >  Backend Development  >  Relevant knowledge and application of PHP file upload

Relevant knowledge and application of PHP file upload

jacklove
jackloveOriginal
2018-05-07 11:41:511495browse

php file upload plays an important role in the website, and this article explains it in detail.

Create a file upload form

It is very useful to allow users to upload files from a form.

Please look at the HTML form for uploading files below:

<html><head><meta charset="utf-8"><title>菜鸟教程(runoob.com)</title></head><body><form action="upload_file.php" method="post" enctype="multipart/form-data">    <label for="file">文件名:</label>    <input type="file" name="file" id="file"><br>    <input type="submit" name="submit" value="提交"></form></body></html>

Save the above code into the form.html file.

Some notes about the above HTML form are listed below:

The enctype attribute of theff9c23ada1bcecdd1a0fb5d5a0f18437 tag specifies which content type to use when submitting the form. Use "multipart/form-data" when your form requires binary data, such as file content.

d5fd7aea971a85678ba271703566ebfd The type="file" attribute of the tag specifies that the input should be processed as a file. For example, when previewing in a browser, you'll see a browse button next to the input box.

Note: Allowing users to upload files is a huge security risk. Please allow only trusted users to perform file upload operations.

Create upload script

The "upload_file.php" file contains the code for uploading files:

<?phpif ($_FILES["file"]["error"] > 0){    echo "错误:" . $_FILES["file"]["error"] . "<br>";}else{    echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";    echo "文件类型: " . $_FILES["file"]["type"] . "<br>";    echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";    echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];}?>

By using PHP's global array $_FILES, you can The client computer uploads the file to the remote server.

The first parameter is the input name of the form, and the second subscript can be "name", "type", "size", "tmp_name" or "error". As shown below:

$_FILES["file"]["name"] - The name of the uploaded file

$_FILES["file"]["type"] - The type of the uploaded file

$_FILES["file"]["size"] - The size of the uploaded file in bytes

$_FILES["file"]["tmp_name"] - Stored on the server The name of the temporary copy of the file

$_FILES["file"]["error"] - the error code caused by the file upload

This is a very simple way to upload files. For security reasons, you should add restrictions on who is allowed to upload files.

Upload Limitation

In this script, we have added a limit on file uploads. Users can only upload .gif, .jpeg, .jpg, .png files, and the file size must be less than 200 kB:

<?php// 允许上传的图片后缀$allowedExts = array("gif", "jpeg", "jpg", "png");$temp = explode(".", $_FILES["file"]["name"]);$extension = end($temp);        // 获取文件后缀名if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/jpg")|| ($_FILES["file"]["type"] == "image/pjpeg")|| ($_FILES["file"]["type"] == "image/x-png")|| ($_FILES["file"]["type"] == "image/png"))&& ($_FILES["file"]["size"] < 204800)    // 小于 200 kb&& in_array($extension, $allowedExts)){    if ($_FILES["file"]["error"] > 0)    {        echo "错误:: " . $_FILES["file"]["error"] . "<br>";    }    else    {        echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";        echo "文件类型: " . $_FILES["file"]["type"] . "<br>";        echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";        echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];    }}else{    echo "非法的文件格式";}?>

Save the uploaded file

The above example is in the server's PHP temporary A temporary copy of the uploaded file is created in the folder.

This temporary copy file will disappear when the script ends. To save the uploaded file, we need to copy it to another location:

<?php// 允许上传的图片后缀$allowedExts = array("gif", "jpeg", "jpg", "png");$temp = explode(".", $_FILES["file"]["name"]);echo $_FILES["file"]["size"];$extension = end($temp);     // 获取文件后缀名if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/jpg")|| ($_FILES["file"]["type"] == "image/pjpeg")|| ($_FILES["file"]["type"] == "image/x-png")|| ($_FILES["file"]["type"] == "image/png"))&& ($_FILES["file"]["size"] < 204800)   // 小于 200 kb&& in_array($extension, $allowedExts)){    if ($_FILES["file"]["error"] > 0)    {        echo "错误:: " . $_FILES["file"]["error"] . "<br>";    }    else    {        echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";        echo "文件类型: " . $_FILES["file"]["type"] . "<br>";        echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";        echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";        
        // 判断当期目录下的 upload 目录是否存在该文件        // 如果没有 upload 目录,你需要创建它,upload 目录权限为 777        if (file_exists("upload/" . $_FILES["file"]["name"]))        {            echo $_FILES["file"]["name"] . " 文件已经存在。 ";        }        else        {            // 如果 upload 目录不存在该文件则将文件上传到 upload 目录下            move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);            echo "文件存储在: " . "upload/" . $_FILES["file"]["name"];        }    }}else{    echo "非法的文件格式";}?>

This article provides a detailed explanation of the PHP upload file. For more learning materials, please pay attention to the PHP Chinese website. .

Related recommendations:

PHP Loops - Understanding the While Loop is related to the use of

PHP 5 echo and print statements Knowledge and Application

Understanding and Application of PHP Magic Variables

The above is the detailed content of Relevant knowledge and application of PHP file upload. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn