文件上传(在一个文件中实现)

PHP能够接受任何来自符合RFC-1867标准的浏览器上传的文件。PHP的这种特性使得我们既可以上传文本文件,也可以上传二进制文件。


<form entype="multipart/form-data" action="_url_" method="post">

//隐藏变量,限制上传文件的最大容量
<input type="hidden" name="max_file_size" value="30000">

//编辑框和浏览按钮合在一起,称为userfile控件
上传文件:<input name="userfile" type="file">

<input type="submit" value="提交">
</form>

文件上传后,PHP接受它,并作为临时文件存储。
处理:
接受上传文件的PHP脚本必须在文件上传后进行判断,来决定接下来要对该文件进行哪些操作。例如,您可以通过$_FILES['userfile']['size']变量来忽略尺寸太大或太小的文件,也可以通过$_FILES['userfile']['type']变量来过滤文件类型和某种标准不相符合的文件。在PHP4.2.0以上版本,您还可以通过$_FILES['userfile']['error']变量来根据不同的错误代码来做相关的判断。不管做何处的判断,您必须将该文件从临时目录中删除,要么将其移动到其它的地方。

如果表单中没有选择上传的文件,则PHP变量$_FILES['userfile']['size']的值将为0,$_FILES['userfile']['tmp_name']将为none。

如果该文件没有被移动到其它地方也没有被改名,则该文件将在表单请求结束时被删除。

move_uploaded_file(临时文件,新文件)

$_FILES['USERFILE']['NAME']客户端机器文件的原名称
$_FILES['USERFILE']['TYPE']文件的MIME类型,需要浏览器提供该信息的支持
$_FILES['USERFILE']['SIZE']已上传文件的大小,单位为字节
$_FILES['USERFILE']['TMP_NAME']文件被上传后在服务端储存的临时文件名
$_FILES['USERFILE']['ERROE']和该文件上传相关的错误代码。

File Uploads 参数
在C:/AppServ/php5下的php.ini_distk
; Whether to allow HTTP file uploads.
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
;upload_tmp_dir =

; Maximum allowed size for uploaded files.
upload_max_filesize = 2M

--------------------------------------------------------------------------------------------------------------------------------------------------

<?
 //判断是上载界面还是实现界面,如果是上载页面,显示下面的HTML页面
 if(!$UploadAction):
?>

<html>
<head>
<title>文件上载界面</title>
</head>
<body><table><center>
<form enctype="multipart/form-data" name="SubmitForm" action="exa.php" method="post">
 <input type="hidden" name="max_file_size" value="1000000">
 <input type="hidden" name="UploadAction" value="1">
 <tr>
  <td><input type="file" name="userfile" size="30"></td>
 </tr>
 <tr>
  <td><input type="submit" name="submit" value="提交"></td>
  <td><input type="reset" name="reset" value="重置"></td>
 </tr>
</form>
</center></table></body>
</html>

<?
 else:
?>

<html>
<head>
<title>文件上载代码</title>
</head>
<body>

<?
 //初始化UploadAction的状态
 $UploadAction=0;
 
 /*设置超时限制时间,缺省时间为30S,设置为0时为不限时,这里设置的是60S*/
 $TimeLimit=60;
 
 //设置超时显示的时间
 set_time_limit($TimeLimit);
 
 //上载文件存放路径
 $uploaddir='C:/AppServ/www/upload/111';
 
 //上载文件名
 $uploadfile=$uploaddir. $_FILES['userfile']['name'];
 
 //临时文件
 $tmpfile=$_FILES['userfile']['tmp_name'];
 
 //上载文件大小
 $file_size=$_FILES['userfile']['size'];
 
 $errno=$_FILES['userfile']['error'];
 
 if(($tmpfile!="none")&&($tmpfile!=""))
 {
  //对于小于1K的文件,以字节来显示文件的大小
  if($file_size<1024)
  {
   $strFileSize=(string)$file_size . "字节";
  }
  
  //对于大小1K并且小于1M的文件,以K字节来显示文件的大小
  elseif($file_size<(1024*1024))
  {
   $strFileSize=number_format((double)($file_size/1024),1) . "KB";
  }
  
  else
  {
   //对于大于1M的文件,用M字节来显示文件的大小,不过,由于max_file_size限制了上载文件最大为1000000个字节,还不到1M,因此大于1M的文件将都被忽略掉。
   $strFileSize=number_format((double)($file_size/(1024*1024)),1) . "MB";
  }
  
  //如果在指定的位置,文件并不存在,继续上载
  if(!file_exists($uploadfile))
  {
   //将上载的文件移动到指定的位置
   if(move_uploaded_file($tmpfile,$uploadfile))
   {
    echo "文件 $uploadfile ($strFileSize)上载成功!";
   }
   else
   {
    echo "文件 $uploadfile 上载失败!(错误号:$errno)";
   }
  }
  
  //如果在指定的位置,已经存在了上载文件,提示、结束
  else
  {
   echo "$uploadfile 已经存在!(错误号:$errno)";
  }
 }
 
 //如果没有选择文件进行上载,或者上载的文件大小超过了max_file_size,提示
 else
 {
  echo "您没有选择任何文件上载,或者上载的文件超出了$max_file_size!";
 }
 
 //恢复缺省超时设置
 set_time_limit(30);
?>

<br><a href="exa.php">返回</a>
</body>
</html>

<?
 endif;
?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值