先判断是否上传文件
如果有再来判断上传中是否出错
如果出错 则提示出错信息
如查没出错 再判断文件类型
如果类型符合条件 再判断指定目录中有没有存在该文件
键升团 如果没有就把该文件移至指定目录
在php中上传文件必须知道的几个东西
$_FILES[ myfile ][ name ] 是指被上传文件的名称
$_FILES[ myfile ][ type ] 是指被上传文件的类型
$_FILES[ myfile ][ size ] 是指被上传文件的大小 单位为字节(B)
$_FILES[ myfile ][ tmp_name ] 是指被上传文件存在服务器中的临时副本文件名称 文件被移动到指定目录后临文件将被自动消毁
$_FILES[ myfile ]["error"] 是指由文件上传中有可能出现的错误的状态码 关于各状态含义后在会说明
先来看一下HTML部分
代码如下稿橘 复制代码?<form action="upload php" method="post" enctype="multipart/form data">上传 <input type=file name=myfile /><input type=submit name=submit value="上传" /></form>
说明
form标答的action="upload php"是指点击这个form中的submit的时候 这个上传命令会被发送到这个叫 upload php的页面去处理 method="post"是指以post方式去送 enctype="multipart/form data"属性规定了在提交这个表单时要使用哪种内容类型笑掘 在表单需要二进制数据时 比如文件内容 请使用"multipart/form data" 如果要上传文件 这个属性是必要的 input中的type="file"时 规定了应该把输入作为文件来处理 并且在input后面会有一个浏览的按钮
我们再来看一个PHP处理页面 upload php
代码如下 复制代码<?php if($_FILES[ myfile ][ name ] != ) { if($_FILES[ myfile ][ error ] >) { echo "错误状态 " $_FILES[ myfile ][ error ]} else { move_uploaded_file($_FILES[ myfile ][ tmp_name ] "uploads/" $FILES[ myfile ][ name ])echo "<script>alert(上传成功!)</script>"} } else{ echo "<script>alert(请上传文件!)</script>"} ?>
上面超级简单 我们现在来升级一下
upload php
代码如下 复制代码<!DOCTYPE HTML PUBLIC " //W C//DTD HTML Transitional//EN"><><head><title>ddd</title><meta equiv="content type" content="text/charset=UTF "></head><body><! 文件上传要注意: 要有enctyp method="post" ><form enctype="multipart/form data" action="uploadProcess php" method="post" ><table><tr><td>请填写用户名</td><td><input type=text name=username></td></tr><tr><td>请简单介绍文件</td><td><textarea rows=" " cols=" " name=fileintro class="page_speeder_734321457"></textarea></td></tr><tr><td>请上传你的文件</td><td><input type=file name=myfile></td></tr><tr><td colspan=" "><input type=submit value="上传"><td></tr></table></form></body></>
uploadProcess php
代码如下 复制代码<?php
//接收 $username=$_POST[ username ]$fileintro=$_POST[ fileintro ]//echo $username $fileintro//获取文件信息 /* echo "<pre>"print_r($_FILES)echo "</pre>"*/ //获取文件的大小 $file_size=$_FILES[ myfile ][ size ]if($file_size>* * ){ echo "<script type= text/javascript >window alert( 文件不能大于 M )</script>"exit()}
//获取文件类型 $file_type=$_FILES[ myfile ][ type ]if($file_type!="image/jpeg" &&$file_type!="image/pjpeg"){ echo "文件类型只能是 jpg 格式"exit()}
//判断上传是否OK if(is_uploaded_file($_FILES[ myfile ][ tmp_name ])){ //得到上传的文件 转存到你希望的目录 $upload_file=$_FILES[ myfile ][ tmp_name ]//防止图片覆盖问题 为每个用户建立一个文件夹 $user_path=$_SERVER[ DOCUMENT_ROOT ] "/file/up/" $usernameif(!file_exists($user_path)){ mkdir ($user_path)}
//$move_to_file=$user_path "/" $_FILES[ myfile ][ name ]//防止用户上传用户名相同的问题 $file_true_name=$_FILES[ myfile ][ name ]$move_to_file=$user_path "/" time() rand( ) substr($file_true_name strripos($file_true_name " "))
//echo $upload_file $move_to_file//中文要转码 if(move_uploaded_file($upload_file iconv("utf " "gb " "$move_to_file"))){ echo $_FILES[ myfile ][ name ] "上传成功"}else{ echo "上传失败"} }else{ echo "上传失败"}
?>
注意:
我举个例子大家就知道 比如一个图片文件 pic jpg 我们用 strrchr处理 strrchr(pic jpg ) 它将返回 jpg 明白了吗?该函数返回指定字符在该字符串最后出现的位置后的字符 配合 substr() 我们就可以取到jpg 这样我们就得到了文件的后缀名 来判断上传文件是否符合指定格式 本程序把指定的格式放在一个数组中 实际使用时可根据需要添加
lishixinzhi/Article/program/PHP/201311/20924
前端页面:
<form action="" method="post" enctype="multipart/form-data"><input type="file" name="file">
<input type="submit" name="submit" value="Submit">
......
</form>
后台接收页面:
if(is_uploaded_file($_FILES['file']['tmp_name'])){if(move_uploaded_file($_FILES['file'困锋]['tmp_name'], 樱举'目标路径')){
//上传成功脊尺碧
}else{
//上传失败
}
}
刚学php时写的一个类,可以给你参考下,你所说的功能基本上也都有。
这个用作学习还是不错的。
<?phpclass fileup{
private $savefilepath //保存路径
private $filetype=array('gif','jpg','jpeg','png') //文件类型
private $maxsize=1000000 //上传最大的尺寸 默认值设置为1M
private $savename=true //是否默春型液认随机名称
private $upfileform //上传文件表单的name值
//以下是不可以修改的成员属性
private $tmpname //上传的临时文件名
private $upfilename //上传文件的名称
private $uperror
private $newname //新的文件名
//private $upfiletype //上传文件的类型
private $upfilesize //上传文件的大小。
private $filehz //文件名的扩展名。
//构造租棚方法
function __construct($upfileform,$savefilepath='./upload/'){
$this->upfileform=$upfileform
$this->savefilepath=rtrim($savefilepath,'/')
$this->tmpname=$_FILES[$upfileform]['tmp_name']
$this->upfilename=$_FILES[$upfileform]['name']
$this->upfilesize=$_FILES[$upfileform]['size']
$this->uperror=$_FILES[$upfileform]['error']
$this->getnewname()
}
//设置文件上传的参数,不设置为默认值。
function setfilepar($par){
$pars=array('filetype','maxsize','savename')
foreach($par as $key=>$value){
if(in_array($key,$pars)){
$this->$key=$value
}else{
continue
}
}
}
//检查上传
private function checkfileup(){
//判断文件夹是否正确或文件夹是否有可写入的权限。
if(!is_dir($this->savefilepath)||!is_writable($this->savefilepath)){
$this->uperror=8
return false
}
//判断文件名是否存在
if(is_file($this->newname)){
$this->uperror=9
return false
}
//判断上传文件的类型是否正确。
if(!in_array(strtolower($this->filehz),$this->filetype)){
$this->uperror=-1
return false
}
return true
}
//获取扒物新的文件名字
private function getnewname(){
$tmp=explode('.',$this->upfilename)
$this->filehz=$tmp[count($tmp)-1]
if(is_bool($this->savename)){
if($this->savename){
$this->newname=$this->savefilepath.'/'.date('YmdHis').rand(10000,99999).'.'.$this->filehz
}else{
$this->newname=$this->savefilepath.'/'.$this->upfilename
}
}else{
$this->newname=$this->savefilepath.'/'.$this->savename.'.'.$this->filehz
}
}
//获取错误信息
private function getuperror(){
switch($this->uperror){
case 1: echo '上传文件超过了系统指定的大小' break
case 2: echo '上传文件超过了表单中指定的大小' break
case 3: echo '文件只有部分上传' break
case 4: echo '没有文件上传' break
case 6: echo '找不到上传的文件,系统错误' break
case 7: echo '文件写入失败' break
case 8: echo '文件路径不存在,或不可写' break
case 9: echo '文件名已经存在,请不要重复上传' break
case -1: echo '不是指定上传的文件' break
case -2: echo '请勿使用非法途径上传' break
case -3: echo '文件上传失败' break
default: '未知错误' break
}
}
function fileupload(){
if(!$this->checkfileup()||$this->uperror!=0){
$this->getuperror()
return false
}else{
if(!is_uploaded_file($_FILES[$this->upfileform]['tmp_name'])){
$this->uperror=-2
$this->getuperror()
return false
}else{
if(move_uploaded_file($_FILES[$this->upfileform]['tmp_name'],$this->newname)){
return true
}else{
$this->uperror=-3
return false
}
}
}
}
//获取文件名
function getname(){
return $this->newname
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)