您的位置:首页 > 编程语言 > PHP开发

PHP5薄荷教程[13]文件上传

2008-02-22 18:50 507 查看
  文件上传使用的是POST方式,一个基本的文件上传表单如下:
fileupload.htm
<form enctype="multipart/form-data" action="dealfileupload.php" method="POST">
选择要上传的文件: <input name="userfile" type="file"/>
<input type="submit" value="上传"/>
</form>
  需要注意的是enctype属性的值以及file控件里的name属性,这是用来标识上传的文件的。

  该表单的处理脚本如下:
dealfileupload.php
<?php
$docroot=$_SERVER['DOCUMENT_ROOT'];
$fileupload=$docroot."/upload/".$_FILES['userfile']['name'];
if (move_uploaded_file($_FILES['userfile']['tmp_name'],$fileupload)){
echo "文件上传成功";
}else{
echo "文件上传失败";
}
?>
  如果上传成功,则文件将被保存到网站根目录下的upload目录中。下面让我们分析一下这段简单的处理脚本。
1、$_FILES数组
  如果file控件里的name属性的值为userfile,则$_FILES['userfile']包含了该上传文件的信息。假定我们上传了名为temp.txt的文件,则:
$_FILES['userfile']['name']="temp.txt" 文件名
$_FILES['userfile']['tmp_name']="c:/tmp1" 完整的临时文件名
$_FILES['userfile']['type']="text/plain" 文件类型
$_FILES['userfile']['size']=1024 文件大小(字节数)
$_FILES['userfile']['error']=0 错误代码,0表示成功

2、bool move_uploaded_file (string filename, string destination)
  该函数专门负责转移上传的文件。filename表示完整的临时文件名,一般是$_FILES['file1']['tmp_name'];destination表示完整的目的文件名,一般使用$_SERVER['DOCUMENT_ROOT']."/upload/".$_FILES['file1']['name']。如果上传成功,则返回1,否则返回0并报错。如果想要隐藏错误提示,可以这样写:@move_uploaded_file(...)

3、如果需要上传多个文件,则可以设置多个file控件,注意name属性要设置为不同。如:
filesupload.htm
<form enctype="multipart/form-data" action="dealfilesupload.php" method="POST">
选择要上传的文件1: <input name="file1" type="file"/>
选择要上传的文件2: <input name="file2" type="file"/>
<input type="submit" value="上传"/>
</form>

dealfilesupload.php
<?php
$docroot=$_SERVER['DOCUMENT_ROOT'];
$file1upload=$docroot."/upload/".$_FILES['file1']['name'];
$file2upload=$docroot."/upload/".$_FILES['file2']['name'];
if (@move_uploaded_file($_FILES['file1']['tmp_name'],$file1upload)){
echo "文件1上传成功";
}else{
echo "文件1上传失败";
}
print "<br/>";
if (@move_uploaded_file($_FILES['file2']['tmp_name'],$file2upload)){
echo "文件2上传成功";
}else{
echo "文件2上传失败";
}
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: