php第七节

第七节介绍一下文件的上传
一、文件上传--$_FILES
1.$_FILES["浏览框名称"]["tmp_name"]
功能:获取上件文件的临时位置及全称
语法:[$变量名称=]$_FILES["浏览框名称"]["tmp_name"];
2.$_FILES["浏览框名称"]["name"]
功能:获取上件文件的全称
语法:[$变量名称=]$_FILES["浏览框名称"]["name"];
3.$_FILES["浏览框名称"]["size"]
功能:获取上件文件的尺寸
语法:[$变量名称=]$_FILES["浏览框名称"]["size"];
4.$_FILES["浏览框名称"]["type"]
功能:获取上件文件的类型
语法:[$变量名称=]$_FILES["浏览框名称"]["type"];
5.$_FILES["浏览框名称"]["error"]
功能:获取上件文件产生的错误
语法:[$变量名称=]$_FILES["浏览框名称"]["error"];
6.move_uploaded_file
功能:将上传文件移动到指定位置
语法:[$变量名称=]move_uploaded_file("原文件的位置及全称","新文件的位置及全
");
7.foreach结构
foreach($数组名称 as $变量名称)
{
执行代码
...
}
foreach($数组名称 as $变量名称 => $变量名称)
{
执行代码
...
}
8.上传多个文件
浏览框必须采用数组形态命名
 
上传文件需要两个页面
1)文件上传页面:selectfile.php
2)文件接收页面:uploadfile.php
实例1:
selectfile.php页面如下:
<form action="uploadfile.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <table width="500" border="0" align="center" cellpadding="10" cellspacing="1" bgcolor="#666666">
   
    <tr>
      <td bgcolor="#FFFFFF">选择要上传的文件</td>
      <td bgcolor="#FFFFFF"><input type="file" name=" file" /></td>
    </tr>
    <tr>
      <td colspan="2" bgcolor="#FFFFFF">
      <input type="submit" name="submit" id="submit" value="提交"/>
      </td>
    </tr>
  </table>
</form>
注: file必须为:浏览框的名字。
 
uploadfile页面如下:
<?php
$tempName = $_FILES["file"]["tmp_name"];
$name = $_FILES["file"]["name"];
$size = $_FILES["file"]["size"];
$type = $_FILES["file"]["type"];
$error = $_FILES["file"]["error"];
echo("<p>临时位置及全称:{$tempName}</p>\n");
echo("<p>全称:{$name}</p>\n");
echo("<p>尺寸:{$size}</p>\n");
echo("<p>类型:{$type}</p>\n");
echo("<p>错误:{$error}</p>\n");
if($error==0)
move_uploaded_file($tempName,"uploadimages/".$name);
?>
输出的结果为:文件的原始位置,名字,大小,类型,错误信息。
类似于:
临时位置及全称:C:\WINDOWS\Temp\phpE2.tmp
全称:zbb.jpg
尺寸:1244854
类型:image/bmp
错误:0
错误为:0 代表没有错误。
 
实例2:若想给上传的文件改名uploadfile.php页面则如下:
<?php
$tempName = $_FILES["file"]["tmp_name"];
$name = $_FILES["file"]["name"];
$size = $_FILES["file"]["size"];
$type = $_FILES["file"]["type"];
$error = $_FILES["file"]["error"];
if($error==0)
{
 $uploadFilenameArray  = explode(".",$name);
 $fileExtName = end($uploadFilenameArray);
 $fileMainame = date("YmdHis",time()+8*3600) . rand(1000,9999);
 $fileNewName =  $fileMainame . "." . $fileExtName;
 move_uploaded_file($tempName,"uploadimages/".$fileNewName);
}
?>
输出的结果类似于:200906261716261445.jpg
注:end为:将数组的内部指针指向最后一个单元
如:
<?php
$fruits 
= array('apple','banana','cranberry');
echo 
end($fruits); // cranberry
?>
 
实例3:限制上传文件的类型则uploadfile.php如下:
<?php
$allowFileExtNameList = "gif|jpg|jpeg|png|txt|rar|zip|swf|doc";
$tempName = $_FILES["file"]["tmp_name"];
$name = $_FILES["file"]["name"];
$size = $_FILES["file"]["size"];
$type = $_FILES["file"]["type"];
$error = $_FILES["file"]["error"];
if($error==0)
{
 $uploadFilenameArray  = explode(".",$name);
 $fileExtName = strtolower(end($uploadFilenameArray)); 
 $fileMainame = date("YmdHis",time()+8*3600) . rand(1000,9999);
 $fileNewName =  $fileMainame . "." . $fileExtName;
 $allowFileExtNameListArray = explode("|",$allowFileExtNameList);
 if(in_array($fileExtName,$allowFileExtNameListArray))
 move_uploaded_file($tempName,"uploadimages/".$fileNewName);
}
?>
注:strtolower函数的作用是:将一个字符转为小写字母。
那么strtoupper函数的作用是:将一个字符转为大写字母。
如:
<?php
$str 
"Mary Had A Little Lamb and She LOVED It So";
$str strtolower($str);
echo 
$str// Prints mary had a little lamb and she loved it so
?>
 
in_array:检查数组中是否存在某个值。
语法: in_array ( mixed $needle , array $haystack [, bool $strict ] )
如:

<?php
$os 
= array("Mac""NT""Irix""Linux");
if (
in_array("Irix"$os)) {
    echo 
"Got Irix";
}
if (
in_array("mac"$os)) {
    echo 
"Got mac";
}
?>
输出的结果为:
Got  Irix
 
实例4:同时上传多个文件。同样还是以上两个页面。
selectfile.php页面如下:
<form action="uploadfile.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <table width="500" border="0" align="center" cellpadding="10" cellspacing="1" bgcolor="#000000">
    <tr>
      <td rowspan="5" bgcolor="#FFFFFF">选择要上传的文件</td>
      <td bgcolor="#FFFFFF"><input name=" file[]" type="file" id="file[]" /></td>
    </tr>
    <tr>
      <td bgcolor="#FFFFFF"><input name=" file[]" type="file" id="file[]" /></td>
    </tr>
    <tr>
      <td bgcolor="#FFFFFF"><input name=" file[]" type="file" id="file[]" /></td>
    </tr>
    <tr>
      <td bgcolor="#FFFFFF"><input name=" file[]" type="file" id="file[]" /></td>
    </tr>
    <tr>
      <td bgcolor="#FFFFFF"><input name=" file[]" type="file" id="file[]" /></td>
    </tr>
    <tr>
      <td colspan="2" bgcolor="#FFFFFF"><input type="submit" name="Submit" value="Submit" /></td>
    </tr>
  </table>
</form>
注意:一定要保持浏览框的名字一致,一般用数组的形式命名。
 
uploadfile.php页面如下:
<?php
foreach($_FILES['file']['error']  as $key => $value)
{
 if($value == 0)
 {
  $tempName = $_FILES['file']['tmp_name'][$key];
  $name = $_FILES['file']['name'][$key];
  move_uploaded_file($tempName,$name);
 }
}
?>
 
 
特例:自动添加多个浏览行,并提交。
selectfile.php页面如下:
<!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>Untitled Document</title>
<script language="javascript">
var i = 0;
function addRow()
{
 rowsCount = document.getElementById("attachfile").rows.length;
 newRowIndex = rowsCount;
 rowId = "row" + i;
 document.getElementById("attachfile").insertRow(newRowIndex);
 document.getElementById("attachfile").rows[newRowIndex].insertCell(0);
 document.getElementById("attachfile").rows[newRowIndex].id = rowId;
 document.getElementById("attachfile").rows[newRowIndex].cells[0].innerHTML = "<input type='file' name='file[]'/>&nbsp;&nbsp;<a href=\"javascript:removeRow('"+rowId+"')\">删除行</a>";
 i++;
}
function removeRow(rowId)
{
 rowIndex = document.getElementById(rowId).rowIndex;
 document.getElementById("attachfile").deleteRow(rowIndex);
 
}
</script>
<style type="text/css">
<!--
body,td,th {
 font-size: 12px;
}
-->
</style></head>
<body>
<form action="uploadfile.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <table width="671" border="0" align="center" cellpadding="10" cellspacing="1" bgcolor="#666666">
    <tr>
      <td bgcolor="#FFFFFF">主题</td>
      <td bgcolor="#FFFFFF"><input type="text" name="textfield" /></td>
    </tr>
    <tr>
      <td bgcolor="#FFFFFF">内容</td>
      <td bgcolor="#FFFFFF"><textarea name="textfield2"></textarea></td>
    </tr>
   
    <tr>
      <td valign="top" bgcolor="#FFFFFF">附件</td>
      <td bgcolor="#FFFFFF"><a href="javascript:addRow()" >添加行</a>
        <table width="500" border="0" cellpadding="10" cellspacing="0" id="attachfile">
      </table>
   </td>
    </tr>
    <tr>
      <td bgcolor="#FFFFFF">&nbsp;</td>
      <td bgcolor="#FFFFFF"><input type="submit" name="Submit" value="Submit" /></td>
    </tr>
  </table>
</form>
</body>
</html>
 
uploadfile.php页面如下:
<?php
foreach($_FILES["file"]["error"] as $key => $value)
{
 if($value==0)
 {
  $tmpName = $_FILES['file']['tmp_name'][$key];
  $name = "./" . $_FILES['file']['name'][$key];
  move_uploaded_file($tmpName,$name);
 }
}
?>
 





下面是我自己写的PHP最简单的登陆注册留言系统,有兴趣者可下载。
 

本文出自 “赵庆贝” 博客,谢绝转载!

你可能感兴趣的:(PHP,文件上传,职场,水印,休闲)