Php 简明教程
PHP - File Uploading
典型 PHP Web 应用程序所需的一个常见功能是允许用户上传文件。在 PHP 中从客户端上传文件非常容易。在本章中,我们将学习如何针对文件上传过程使用 PHP 脚本。
上传文件的过程遵循以下步骤 −
-
用户打开包含 HTML 表单的页面,其中包含文本文件、浏览按钮和提交按钮。
-
用户单击浏览按钮,并从本地 PC 中选择要上传的文件。
-
系统会在文本文件中显示所选文件的完整路径,然后用户单击提交按钮。
-
所选文件将发送到服务器上的临时目录。
-
表单操作属性中指定为表单处理器的 PHP 脚本将检查文件是否已到达,然后将文件复制到目标目录中。
-
PHP 脚本向用户确认成功。
为了执行此活动,我们必须首先确保“php.ini”中启用了与文件上传相关的配置设置。
打开“php.ini”文件并确保以下设置已启用,方法是在 file_uploads、upload_tmp_dir、upload_max_filesize 和 max_file_uploads 参数中删除前导分号 (;) 符号 −
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads=On
; Temporary directory for HTTP uploaded files (will use system
; default if not specified).
; http://php.net/upload-tmp-dir
upload_tmp_dir="C:\xampp\tmp"
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize=40M
; Maximum number of files that can be uploaded via a single request
max_file_uploads=20
临时位置和最终位置的文件夹必须设置有允许文件写入的权限。如果任一位置设置为只读,那么进程将失败。
Creating a File Upload Form
下一步,我们需要设计一个用于文件上传的 HTML 表单。该表单的 method 属性必须为 POST,enctype 必须为 multipart/form-data。使用 file 作为 input 类型,以便让用户浏览并选择要上传的文件。
<h2>File Upload Form</h2>
<form method = "POST" action = "uploadfile.php" enctype="multipart/form-data">
<label for="file">File name:</label>
<input type="file" name="uploadfile" />
<input type="submit" name="submit" value="Upload" />
</form>
Creating an Upload Script
uploadfile.php 脚本接收已上传的文件。文件数据收集在超级全局变量 $_FILES 中。获取已上传文件的名称、文件类型、大小和 tmp_name 属性。
move_uploaded_file() 函数将所选文件复制到文档文件夹中。
<?php
echo "<b>File to be uploaded: </b>" . $_FILES["uploadfile"]["name"] . "<br>";
echo "<b>Type: </b>" . $_FILES["uploadfile"]["type"] . "<br>";
echo "<b>File Size: </b>" . $_FILES["uploadfile"]["size"]/1024 . "<br>";
echo "<b>Store in: </b>" . $_FILES["uploadfile"]["tmp_name"] . "<br>";
if (file_exists($_FILES["uploadfile"]["name"])){
echo "<h3>The file already exists</h3>";
} else {
move_uploaded_file($_FILES["uploadfile"]["tmp_name"], $_FILES["uploadfile"]["name"]);
echo "<h3>File Successfully Uploaded</h3>";
}
?>
假设 myform.php 和 uploadfile.php 这两个文件都存储在文档文件夹中。
在浏览器中打开 “myform.php” - ([role="bare"]http://localhost/myform.php) -
单击 File 按钮,浏览到待上传的目标文件,并单击 Upload 按钮。
服务器返回以下消息 -