PHP脚本可与HTML表单一起使用,以允许用户将文件上载到服务器.最初将文件上载到临时目录中,然后通过PHP脚本重新定位到目标目标.
phpinfo.php 页面中的信息描述了临时目录用于文件上传为 upload_tmp_dir ,并且可以上传的文件的最大允许大小表示为 upload_max_filesize .这些参数设置为PHP配置文件 php.ini
上传文件的过程遵循以下步骤 :
用户打开包含HTML表单的页面,其中包含文本文件,浏览按钮和提交按钮.
用户点击浏览按钮并选择要从本地PC上传的文件.
所选文件的完整路径显示在然后用户单击提交按钮.
所选文件将发送到服务器上的临时目录.
在表单的action属性中指定为表单处理程序的PHP脚本检查文件是否已到达,然后将文件复制到目标目录中.
PHP脚本确认用户是否成功.
与编写文件时一样,这是必要的为临时和最终位置设置权限启用文件写入.如果将其中任何一个设置为只读,则进程将失败.
上传的文件可以是文本文件或图像文件或任何文档.
以下HTM代码创建一个上传表单.此表单的方法属性设置为 post ,enctype属性设置为 multipart/form-data
<?php if(isset($_FILES['image'])){ $errors= array(); $file_name = $_FILES['image']['name']; $file_size =$_FILES['image']['size']; $file_tmp =$_FILES['image']['tmp_name']; $file_type=$_FILES['image']['type']; $file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); $extensions= array("jpeg","jpg","png"); if(in_array($file_ext,$extensions)=== false){ $errors[]="extension not allowed, please choose a JPEG or PNG file."; } if($file_size > 2097152){ $errors[]='File size must be excately 2 MB'; } if(empty($errors)==true){ move_uploaded_file($file_tmp,"images/".$file_name); echo "Success"; }else{ print_r($errors); } } ?> <html> <body> <form action="" method="POST" enctype="multipart/form-data"> <input type="file" name="image" /> <input type="submit"/> </form> </body> </html>
它将产生以下结果 :
有一个名为 $ _ FILES 的全局PHP变量.此变量是关联双维数组,并保留与上载文件相关的所有信息.因此,如果在上传表单中分配给输入的name属性的值是 file ,则PHP将创建以下五个变量 :
$ _ FILES ['file'] ['tmp_name'] : 上传的文件位于Web服务器上的临时目录中.
$ _ FILES ['file'] ['name'] &minus ;上传文件的实际名称.
$ _ FILES ['file'] ['size'] : 上传文件的大小(字节).
$ _ FILES ['file'] ['type'] : 上传文件的MIME类型.
$ _ FILES ['file'] ['error'] : 与此文件上传相关联的错误代码.
以下示例应允许上传图片并将结果作为上传的文件信息返回.
<?php if(isset($_FILES['image'])){ $errors= array(); $file_name = $_FILES['image']['name']; $file_size = $_FILES['image']['size']; $file_tmp = $_FILES['image']['tmp_name']; $file_type = $_FILES['image']['type']; $file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); $extensions= array("jpeg","jpg","png"); if(in_array($file_ext,$extensions)=== false){ $errors[]="extension not allowed, please choose a JPEG or PNG file."; } if($file_size > 2097152) { $errors[]='File size must be excately 2 MB'; } if(empty($errors)==true) { move_uploaded_file($file_tmp,"images/".$file_name); echo "Success"; }else{ print_r($errors); } } ?> <html> <body> <form action = "" method = "POST" enctype = "multipart/form-data"> <input type = "file" name = "image" /> <input type = "submit"/> <ul> <li>Sent file: <?php echo $_FILES['image']['name']; ?> <li>File size: <?php echo $_FILES['image']['size']; ?> <li>File type: <?php echo $_FILES['image']['type'] ?> </ul> </form> </body> </html>
它将产生以下结果 :