分享

php文件上传: $_FILES 数组的内容

 每天学一点7 2013-12-09
$_FILES['userfile']['name'] 客户端机器文件的原名称。
 $_FILES['userfile']['type'] 文件的 MIME 类型,如果浏览器提供此信息的话。一个例子是“image/gif”。不过此 MIME 类型在 PHP 端并不检查,因此不要想当然认为有这个值。 
$_FILES['userfile']['size'] 已上传文件的大小,单位为字节。 
$_FILES['userfile']['tmp_name'] 文件被上传后在服务端储存的临时文件名。 
$_FILES['userfile']['error'] 和该文件上传相关的错误代码。

   $_FILES['userfile']['error']相关的错误代码:
   UPLOAD_ERR_OK

其值为 0,没有错误发生,文件上传成功。

UPLOAD_ERR_INI_SIZE

其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。

UPLOAD_ERR_FORM_SIZE

其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。

UPLOAD_ERR_PARTIAL

其值为 3,文件只有部分被上传。

UPLOAD_ERR_NO_FILE

其值为 4,没有文件被上传。

UPLOAD_ERR_NO_TMP_DIR

其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。

UPLOAD_ERR_CANT_WRITE

其值为 7,文件写入失败。PHP 5.1.0 引进。


代码示例:

<?php

if($_FILES['userfile']['error']>0)//当$_FILES['userfile']['error']=0时没有错误,文件上传成功

{

    echo "Problem:";

switch($_FILES['userfile']['error'])

{

  case 1:

        echo "上传的文件超过了upload_max_file限制的值";

break;

  case 2:

        echo "上传的文件超过了html表单中max_file_size指定的值";

break;

  case 3:

        echo "文件只有部分被上传";

break;

  case 4:

        echo "没有文件被上传";

break;

  case 6:

        echo "找不到临时文件夹";

break;

  case 7:

        echo "文件写入失败";

break;

}

exit;

}

?>


加上下面的代码组成整个上传文件的php

<?php

//判断上传文件类型

if($_FILES['userfile']['type'] != 'text/plain')

//if($_FILES['userfile']['type'] != 'image/jpeg')

{

   echo "problem: file is not plain text";

   exit;

}

//

$upfile = $_SERVER['DOCUMENT_ROOT'].$_FILES['userfile']['name'];

//is_uploaded_file()如果$_FILES['userfile']['tmp_name'] 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件

if(is_uploaded_file($_FILES['userfile']['tmp_name']))

{

//本函数检查并确保$_FILES['userfile']['tmp_name']指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由$upfile指定的文件。

    if(!move_uploaded_file($_FILES['userfile']['tmp_name'],$upfile))

{

echo "problem: could not move file to destination directory";

exit;

}

}

else

{

   echo "problem: possibel file upload attack. Filename:";

   echo $_FILES['userfile']['name'];

   exit;

}


echo "file upload seccessfully <br><br>";

//

$contents = file_get_contents($upfile);//file_get_contents() 函数把整个文件读入一个字符串中。

$contents = strip_tags($contents);//strip_tags该函数尝试返回给定的字符串 $contents去除空字符、HTML 和 PHP 标记后的结果

file_put_contents($_FILES['userfile']['name'],$contents);//file_put_contents() 函数把一个字符串写入文件中

//show what was uploaded

echo "<p>preview of uploaded file contents:<br><hr/>";

echo nl2br($contents);//nl2br() 函数在字符串中的每个新行 (\n) 之前插入 HTML 换行符 (<br />)。

echo "<br><hr/>";

?>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多