对于一些网站来说,文件上传是一个不可获取的功能,下面就是使用php实现简单的文件上传功能的介绍
php实现上传功能很简单,因为系统为我们提供好了函数,我们只需调用就可以了
首先在网页前端我们要设置一个上传的对话框,我们可以使用input 标签就可以下面是一个文件上传的对话框的代码
<input type="file" name="uploadfile" value="Upload File">
注意这个需要放置在一个上传文件的form里面即<form enctype="multipart/form-data" method="post" name="uploadform">和
</form>之间,根据代码可以明白,还是要具体解释一下enctype 属性可设置或返回用于编码表单内容的 MIME 类型。
如果表单没有 enctype 属性,那么当提交文本时的默认值是 "application/x-www-form-urlencoded"。
当 input type 是 "file" 时,值是 "multipart/form-data"。当然上传文件我们还需要一个按钮来submit我们的请求,<input
type="submit" name="submit" value="Upload">
注意:这里的name在下来的代码中都会遇到
现在开始写php程序,当我们选择好了文件上传后,默认的会给我们上传的文件起一个临时文件名,我们根据这个临时文件名判断(这里本人认
为php上传原理是不论类型如何,想将文件上传到一个临时位置,然后根据类型或者其他判断是否将这个上传文件转移到特定的文件夹下)
下面是根据文件类型判断是否转移到指定的目录
if(is_uploaded_file($_FILES["uploadfile"]["tmp_name"])){
//为了便利,我们用变量存储下列属性值
$upfile=$_FILES["uploadfile"];
$name=$upfile["name"];
$type=$upfile["type"];
$size=$upfile["size"];
$tmp_name=$upfile["tmp_name"];
$error=$upfile["error"];
//echo $name;
//下面判断文件的类型来设置$ok的值来表示是否要将文件转移到指定目录
这里我们通常处于安全考虑限制可执行文件类型的上传
switch($type){
case "image/jpg": $ok=1;
break;
case "image/jpeg": $ok=1;
break;
case "image/gif" : $ok=1;
break;
}
//根据网站对限制文件的要求以及上传文件的错误信息判断是否要进行转移,如果没有上传错误并且文件类型也符合要求,开始转移文件
if($ok&&$error=='0'){
move_uploaded_file($tmp_name,'up/'.$name);//move_uploaded_file()是php中的转移函数,“up/”为网站根目
录下的文件夹(必须先创建好),具体参数可以参考php手册
//转移成功后显示提示框成功
echo "<script language=/"javascript/">alert('succeed')</script>";
}else{//失败后返回错误信息
echo "<script language=/"javascript/">alert('invalid type')</script>";
}
}
这个上传的实现功能很简单,但是需要仔细体会,下面是这个php文件的源码
<?php
if(is_uploaded_file($_FILES["uploadfile"]["tmp_name"])){
$upfile=$_FILES["uploadfile"];
$name=$upfile["name"];
$type=$upfile["type"];
$size=$upfile["size"];
$tmp_name=$upfile["tmp_name"];
$error=$upfile["error"];
//echo $name;
switch($type){
case "image/jpg": $ok=1;
break;
case "image/jpeg": $ok=1;
break;
case "image/gif" : $ok=1;
break;
}
if($ok&&$error=='0'){
move_uploaded_file($tmp_name,'up/'.$name);
echo "<script language=/"javascript/">alert('succeed')</script>";
}else{
echo "<script language=/"javascript/">alert('invalid type')</script>";
}
}
?>
<form enctype="multipart/form-data" method="post" name="uploadform">
<input type="file" name="uploadfile" value="Upload File">
<input type="submit" name="submit" value="Upload">
</form>