首页博客网络编程
我们已经学会了打开和读取各种外部文件,但有时您必须直接将文件上传到服务器。PHP为此提供了有用的内置函数。
在 PHP 文件上载过程中,对代码中允许的文件类型设置限制,并确定文件何时太大。
您的代码包含的所有内容都可能称为 $_FILES。此超全局变量是一个数组,其中包含您上传的文件的所有数据。
PHP文件上传允许用户上传文本和二进制文件。
使用 PHP 时,上传文件过程需要权限。
要以特定方式上传文件,您可以设置限制。
上传到脚本的所有文件的关联数组称为 PHP 。$_files
如果我们希望制作PHP上传文件,我们必须获得许可。如果我们不这样做,我们应该设置 PHP 来允许它。为了实现这一点,我们编辑名为 php.ini 的文件,并将 的值更改为 ,如示例所示:file_uploads
On
例复制
file_uploads = On
在我们准备好启动 PHP 文件上传的权限后,我们可以开始为上传过程创建一个 HTML 表单:
例复制
<!DOCTYPE html> <html> <body> <form action="upload.php" method="post"enctype="multipart/form-data"> Select the image you want to upload: <input type="file" name="file_to_upload"id="file_to_upload"> <input type="submit" value="image upload"name="submit"> </form> </body> </html>
要有效地使用这些表单上传 PHP 文件,请记住以下几点:
通过 HTML 表单上传文件时,我们必须使用分配给表单元素作为属性的方法。post
我们还必须在其属性之间进行分配。这允许浏览器识别编码类型,以便使PHP正确上传文件。enctype="multipart/form-data"
注意:<input> 元素的属性 type=“file” 将输入字段显示为“浏览”按钮旁边的文件选择控件。
文件上传过程的代码保存在上传.php文件中:
例复制
<?php$target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["file_to_upload"]["name"]); $upload_ok = 1; $image_file_type = pathinfo($target_file,PATHINFO_EXTENSION);// checking if image file is accessibleif(isset($_POST["submit"])) { $check = getimagesize($_FILES["file_to_upload"]["tmp_name"]); if($check !== false) { echo "The file you picked is an image - " . $check["mime"] . "."; $upload_ok = 1; } else { echo "The file you picked is not image."; $upload_ok = 0; } }?>
让我们分解示例,并确保我们理解每个步骤:
$target_dir = "uploads/"
告诉服务器将上传的文件放在哪里。 PHP 是保存上传到代码 using 方法的文件的数组。$_files
POST
$target_file
声明要上载的文件的路径。
$upload_ok=1
不会立即使用。它确定上载是否成功。
$image_file_type
保留文件扩展名。
最后,我们必须检查文件是否有效。
注意:必须在放置 upload.php 文件的路径中创建一个名为 uploads 的新目录。上传的文件将放置在那里。
在此步骤中,我们将向表单添加限制。首先,检查我们正在上传的文件是否尚未在我们的上传目录中。如果是,则设置为 :$upload_ok
0
例复制
// checking whether the file is already presentif (file_exists($target_file)) { echo "File already present."; $upload_ok = 0; }
我们声明了一个在我们的表单中调用的字段。现在,我们应该检查文件大小。如果文件大小超过 500 kylobytes(这是我们设置的值),则会触发错误。 然后将设置为 0:file_to_upload
$upload_ok
例复制
// Checking file sizeif ($_FILES["file_to_upload"]["size"] > 500000) { echo "File too big."; $upload_ok = 0; }
让我们看下面的例子。您会注意到它将PHP文件上传限制为仅某些类型的文件。允许的扩展名必须具有 JPG、JPEG、PNG 或 GIF 扩展名。
如果文件与指定的类型不匹配,则会捕获错误并将其设置为 0:$upload_ok
例复制
// Limiting what file formats are allowedif($image_file_type != "gif" && $image_file_type != "jpg" && $image_file_type != "jpeg" && $image_file_type != "png") { echo "Only JPG, JPEG, PNG & GIF files are allowed."; $upload_ok = 0; }
这是制作PHP上传文件的最终结果的样子:
例复制
<?php$target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["file_to_upload"]["name"]); $uploadOk = 1; $image_file_type = pathinfo($target_file,PATHINFO_EXTENSION);// Check if image file is a actual image or fake imageif(isset($_POST["submit"])) { $check = getimagesize($_FILES["file_to_upload"]["tmp_name"]); if($check !== false) { echo "The file you picked is an image - " . $check["mime"] . "."; $upload_ok = 1; } else { echo "The file you picked is not an image."; $upload_ok = 0; } }// Check if file already existsif (file_exists($target_file)) { echo "File already present."; $upload_ok = 0; }// Check file sizeif ($_FILES["file_to_upload"]["size"] > 500000) { echo "File too big."; $upload_ok = 0; }// Limit allowed file formatsif($image_file_type != "jpg" && $image_file_type != "png" && $image_file_type != "jpeg" && $image_file_type != "gif" ) { echo "Only JPG, JPEG, PNG & GIF files are allowed."; $upload_ok = 0; }// Check if $upload_ok is set to 0 by an errorif ($upload_ok == 0) { echo "Your file was not uploaded.";// If all the checks are passed, file is uploaded} else { if (move_uploaded_file($_FILES["file_to_upload"]["tmp_name"], $target_file)) { echo "The file ". basename( $_FILES["file_to_upload"]["name"]). " was uploaded."; } else { echo "A error has occured uploading."; } }?>
您可以将文本和二进制文件上传到脚本。
如果您希望限制上传文件,可以设置某些边界。
上传到 PHP 代码的文件包含在名为 PHP 的关联数组中。$_files
声明提示:若要转载请务必保留原文链接,申明来源,谢谢合作!
广告位
广告位