PHP文件上传代码用法

PHP文件上传代码用法,第1张

php文件上传代码编写过程

先判断是否上传文件

如果有再来判断上传中是否出错

如果出错 则提示出错信息

如查没出错 再判断文件类型

如果类型符合条件 再判断指定目录中有没有存在该文件

键升团 如果没有就把该文件移至指定目录

在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

刚学php时写的一个类,可以给你参考下,你所说的功能基本上也都有。

这个用作学习还是不错的。

<?php

class 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

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12334823.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存