文件上传支持

利用PHP用户能够从任何兼容RFC-1867标准的浏览器上传文件。这个功能使用户既可以上传文本文件也可以上传二进制文件。结合PHP的认证和逻辑函数,你可以完全控制谁可以上传文件,和文件上传后可以干什么。

要实现文件上传,需要建立一个的特殊的FORM,请参考如下例子:

Example 2-3. File Upload Form

    <FORM ENCTYPE="multipart/form-data" ACTION="_URL_" METHOD=POST>
    <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000">
    Send this file: <INPUT NAME="userfile" TYPE="file">
    <INPUT TYPE="submit" VALUE="Send File">
    </FORM>

其中的 _URL_ 是一个用于响应的php文件,隐藏的MAX_FILE_SIZE 参数必须写在输入文件字段之前,它指明了可以上传的文件的最大字节数。 上载传输成功后,下面的变量将被定义:

注意:"$userfile"这个变量是上面表单中 TYPE=file 的字段的名字,在例中我们称为 "userfile"。

文件被存储在服务器上默认的临时目录下。你可通过手工设置PHP运行的环境变量中的TMPDIR来改变。该变量不能通过程序中的PutEnv()函数去设置。

表单中指定的PHP程序,可以控制上传了的文件用来干什么。比如,你可以使用$file_size变量来决定抛弃那些太大或太小的文件;你可以通过比较 $file_type 变量剔除类型不匹配的文件。总之,你可以决定是把那个文件从临时目录里删除还是移到别的地方去。

另请注意,CERN的httpd服务器好象会删掉content-type中mime数据头后第一个空白开始的所有数据。因此,CERN的httpd服务器不支持文件上传。