PHP文件上传

来源:互联网 发布:c语言标准库函数及功能 编辑:程序博客网 时间:2024/05/16 09:35

php文件上传实例讲解

一:打开php配置文件:

       file_uploads on 是否允许通过HTTP上传文件的开关。默认为ON即是开
       upload_tmp_dir -- 文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
       upload_max_filesize 8m 望文生意,即允许上传文件大小的最大值。默认为2M

二:form标签enctype属性

       表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况, 这个编码格式是application/x-www-form-urlencoded,不能用于文件上传; 只有使用了multipart/form-data,才能完整的传递文件数据。
       值得注意的是文件upload.html中表单选项 MAX_FILE_SIZE 的隐藏值域,通过设置其Value(值)可以限制上载文件的大小。 MAX_FILE_SIZE 的值只是对浏览器的一个建议,实际上它可以被简单的绕过。因此不要把对浏览器的限制寄希望于该值。实际上,PHP 设置中的上传文件最大值,是不会失效的。但是最好还是在表单中加上 MAX_FILE_SIZE,因为它可以避免用户在花时间等待上传大文件之后才发现该
文件太大了的麻烦。

三:$_FILES系统函数

       $_FILES['myFile']['name']客户端文件的原名称
       $_FILES['myFile']['type']文件的MIME类型
       $_FILES['myFile']['size']已上传文件的大小
       $_FILES['myFile']['tmp_name']储存的临时文件名,一般为系统默认
       $_FILES['myFile']['error']该文件上传到相关的错误代码

四:move_upload_file函数

      上传后移动文件到目标位置的函数
      move_uploaded_file(临时文件,目标位置);

五:is_uploaded_file函数

       判断上传文件的类型 is_uploaded_file(MIME);

html页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>upload</title>
</head>

<body>
<h1>上传新文件</h1>
<form enctype="multipart/form-data" action="file.php" method=post>
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
上传文件: <input name="userfile" type="file">
<input type="submit" value="上传">
</form>
</body>
</html>

php页面:

<?php

$uploadfile = './upload/'.$_FILES['userfile']['name'];//upload为上传到服务机器的文件夹
echo $uploadfile;

if(is_uploaded_file($_FILES['userfile']['tmp_name']))
{
       echo "OK!";
}

switch    ($_FILES['userfile']['type'])
{

   case    "image/pjpeg":
   $fileextname    =    "jpg";
   break;

   case    "image/gif":
   $fileextname    =    "gif";
   break;

   case    "image/x-png":
   $fileextname    =    "png";
   break;

   case    "application/x-shockwave-flash":
   $fileextname    =    "swf";
   break;

   case    "text/plain":
   $fileextname    =    "txt";
   break;

   case    "application/msword":
   $fileextname    =    "doc";
   break;

   case    "application/x-zip-compressed":
   $fileextname    =    "zip";
   break;

}

echo $fileextname;

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
{
       print "File is valid, and was successfully uploaded. Here's some more debugging info:\n";
       print_r($_FILES);
}

else
{
    print "Possible file upload attack! Here's some debugging info:\n";
    print_r($_FILES);
}

注意:上传到服务器的文件夹要事先建立好,不然报错“failed to open stream: No such file or directory”
0 0