Linux 技术手札

用 PHP 上传档案

建文 HTML 表单
要制作用作上传档案的表单与传统的表单差不多,但必须将表单中的 enctype 属性设成 multipart/form-data。enctype 属性是指定浏览器对表单中的参数进行编码的方法,默认值为 application/x-www-form-urlencoded。
以下是建立表单的例子:

upload.html

处理上传档案
建立了以上的 HTMl 表单后,下一步要做的就是后端的处理。在 PHP 中可以透过二维阵列 $HTTP_POST_FILES 或 $_FILES 来存取所上传的档案详细内容。就以以上表单为例,输入元素名为 userfile,各阵列元素为:

$_FILES[‘userfile’][‘name’] — 档案在客户端电脑上的档案名称
$_FILES[‘userfile’][‘type’] — 档案的 MIME 类型,例如 “image/gif”
$_FILES[‘userfile’][‘size’] — 上传档案的档案大小,单为为 bytes
$_FILES[‘userfile’][‘tmp_name’] — 上传档案储存在服务器端的暂存盘案名
$_FILES[‘userfile’][‘error’] — 上传档案的错误号码

上传档案的 PHP 程式
以上介绍了建立上传档案用的表单及存取阵列,以下便建立上传档案的程式。首先需要建立一个目录作储存盘案,并需要确定 web server 有写入的权限,一般设成 777 就可以,假设使用以上的上传表单,以及上传目录是 “/var/www/uploads/”,以下是程式码范例会显示上传档案资讯以及上传档案:

upload.php

以上传子使用了 copy 函式上传档案,其实 PHP 对上传档案已提供了两个专用函式,它们是 move_uploaded_file() 及 is_uploaded_file(),有兴趣的朋友可参考 PHP 使用手册关于这两个函式的简介及用法。

程式的改进
以上的上传程式只做了最基本的上传动作,在实际应用中还是会有问题,例如不能容纳相同的档案名称、同一目录档案过多时存取效率减低等问题。但本文只作一个入门的介绍,希望日后可以写一篇更深入的文章作介绍。

Exit mobile version