In the previous article, I brought you "How to obtain and detect file attributes in PHP? (Summary Sharing) ", which gives you a detailed introduction to the knowledge of file attributes in PHP. In this article, let's take a look at how we should upload files in PHP. I hope everyone has to help!

In our daily life, we often encounter the steps of uploading files such as uploading pictures to a circle of friends, sending attached files to emails, etc. In our PHP code , what should I do if I want to upload files? File upload is one of the very important functions in the PHP file system, so let's take a look at how to implement such a function.
Configurationphp.ini
To use the file upload function, first we need to configure php .ini, set the parameters in it appropriately. Let's first take a look at how to find the php.ini file. The example is as follows:
First we input:
<?php
phpinfo();
?>
Output result:

From the above results, in You can see the specific path of php.ini in the Loaded Configuration File column. This led to the php.ini file being found.
There are too many files in php.ini. You can use ctrl F to search for related configuration items. Then the parameters we need to configure are as follows:
file_uploads
: on means that the server has enabled the file upload function; if it is off, it means that the server has turned off the file upload function. .
upload_tmp_dir
: Temporary directory for uploading files. Before the file is successfully uploaded, the file will first be stored in the temporary directory on the server side. If it is not set, it will be the system default directory.
upload_max_filesize
: The maximum size of files allowed to be uploaded by the server, in MB.
max_execution_time
: The maximum time that a command can be executed in PHP, in seconds.
memory_limit
: The memory space allocated by a command in PHP, the unit is MB.
What we need to pay attention to is: after the configuration is completed, if you want the configuration to take effect, you need to restart the Apache server for the configured parameters to take effect.
Predefined variable $_FILES
After we configure php.ini, we need to use the predefined variable $_FILES to upload The document makes some restrictions and judgments. The $_FILES variable stores information related to the uploaded file. The information that needs to be saved is as follows:
$_FILES[filename][name]
: Save the uploaded file File name
$_FILES[filename][size]
: Save the size of the uploaded file
$ _FILES[filename][tmp_name]
: Save the temporary name of the uploaded file
##$_FILES[filename][type] : Save the type of the uploaded file
$_FILES[filename][error] : Save the code name of the uploaded file result, 0 means success
us You can use the predefined variable $_FILES combined with HTML to create an example as follows:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PHP文件上傳</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="upfile">
<input type="submit" value="上傳">
</form>
</body>
</html>
<?php
if(!empty($_FILES)){
foreach ($_FILES['upfile'] as $key => $value) {
echo $key.'=>'.$value.'<br>';
}
}
?>
After running the program, select the file to upload according to the form. I take test1.txt as an example, and the output result is:

According to the saved information, we can get the relevant information of the file:
The file name is test1.txt; the type of the uploaded file is text/plain; the temporary file name of the uploaded file is saved. The name is C:\Windows\phpD16F.tmp; 0 means the file was uploaded successfully; the file size is 5.
Single file upload
Through the above code, we have got the basic information of the file to be uploaded. Next we need to use
move_uploaded_file() Function to implement uploading. Its main function is to move the file just uploaded to a new location. Its syntax format is as follows:
move_uploaded_file(string $filename, string $destination)
where
$filenameb represents the file name of the uploaded file. This file name is not the original file name of the uploaded file, but is passed through $_FILES in the previous step. The file name obtained by tmp_name;
$destinationb indicates the location to which the uploaded file is to be moved.
The execution function will return TRUE if it is executed successfully, and FALSE if it fails.
Next let’s take a look at the example:
Upload the test1.txt file just now to a folder named phptest that I created in the root directory. The operation is as follows:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PHP文件上傳</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="upfile">
<input type="submit" value="上傳">
</form>
</body>
</html>
<?php
if(!empty($_FILES)){
$tmpname = $_FILES['upfile']['tmp_name']; // 臨時(shí)文件名稱
$name = $_FILES['upfile']['name']; // 文件的原名稱
$path = './phptest'; // 上傳目錄
$file_name = date('YmdHis').rand(100,999).$name;// 避免文件重名,更改文件名稱
if(move_uploaded_file($tmpname, $path.'/'.$file_name)){
echo $name." 上傳成功!";
}else{
echo $name." 上傳失敗!";
}
}
?>
After uploading the file according to the form, the output result is as follows:

如此則表示我想要上傳的test2.txt已經(jīng)上傳到我需要的目錄中了:

多文件上傳
通過上述示例已經(jīng)了解了單文件上傳的過程,但是在日常使用中經(jīng)常會(huì)用到的是多文件上傳,那多文件上傳應(yīng)該怎么操作呢?
示例如下:
還和上面的示例一樣,上傳多個(gè)文件到我在根目錄里創(chuàng)建的phptest文件夾里
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PHP文件上傳</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="upfile[]"><br>
<input type="file" name="upfile[]"><br>
<input type="file" name="upfile[]"><br>
<input type="submit" value="上傳">
</form>
</body>
</html>
<?php
if(!empty($_FILES)){
$tmpname = $_FILES['upfile']['tmp_name'];
$name = $_FILES['upfile']['name'];
$path = './phptest';
for ($i=0; $i < count($tmpname); $i++) {
$file_name = date('YmdHis').rand(100,999).$name[$i];
if(move_uploaded_file($tmpname[$i], $path.'/'.$file_name)){
echo $name[$i].' 上傳成功!<br>';
}else{
echo $name[$i].' 上傳失敗!<br>';
}
}
}
?>
輸出結(jié)果:

如此結(jié)果顯示,多個(gè)文件已經(jīng)上傳到我的文件夾里了:

推薦學(xué)習(xí):《PHP視頻教程》
The above is the detailed content of How to upload files in PHP? You'll understand after reading it!. For more information, please follow other related articles on the PHP Chinese website!