PHP 文件上传

来源:互联网 发布:淘宝视频开放平台网址 编辑:程序博客网 时间:2024/05/21 07:03

示例代码:

upload.html

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><div class="register"><!-- 文件上传要注意:①enctype  ②method postenctype 属性规定在将表单数据发送到服务器之前如何对其进行编码。注意:只有 method="post" 时才使用 enctype 属性。<form enctype="value">属性值描述application/x-www-form-urlencoded默认。在发送前对所有字符进行编码(将空格转换为 "+" 符号,特殊字符转换为 ASCII HEX 值)。multipart/form-data不对字符编码。当使用有文件上传控件的表单时,该值是必需的。text/plain将空格转换为 "+" 符号,但不编码特殊字符。--><form enctype="multipart/form-data" method="post"  action="upload.php" name="myform"><table><tr><td align="center"  colspan="2"><font style="font-size: 40px;font-family: 华文彩云;">文件上传</font></td></tr><tr><td>请填写用户名:</td><td><input type="text" name="username" /></td></tr><tr><td>请简单介绍该文件</td><td><textarea name="fileintro" rows="10" cols="80"></textarea></td></tr><tr><td>请选择你要上传文件1:</td><td><input type="file" name="myfile" /></td></tr><tr><td><input type="submit" value="上传文件" /></td><td></td></tr></table></form></div></body></html>


upload.php

<?phpheader("Content-Type:text/html;Charset=utf-8");//1、接收提交的文件及其用户信息$username=$_POST['username'];$fileintro=$_POST['fileintro'];//echo $username."||".$fileintro;//我们这里需要使用到 $_FILEecho "<pre>";/* $_FILES["file"]["name"] - 被上传文件的名称$_FILES["file"]["type"] - 被上传文件的类型$_FILES["file"]["size"] - 被上传文件的大小,以字节计$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称$_FILES["file"]["error"] - 由文件上传导致的错误代码 */print_r($_FILES);echo "</pre>";if ($_FILES["myfile"]["error"] > 0){    echo "Error: " . $_FILES["myfile"]["error"] . "<br>";}else{    echo "Upload: " . $_FILES["myfile"]["name"] . "<br>";    echo "Type: " . $_FILES["myfile"]["type"] . "<br>";    echo "Size: " . ($_FILES["myfile"]["size"] / 1024) . " kB<br>";    echo "Stored in: " . $_FILES["myfile"]["tmp_name"]. "<br>";}/* 上传文件需要考虑的细节:(1), 如何控制用户上传的文件大小 < 2m(2), 如何控制用户上传的文件类型(问题!)(3), 如何防止用户图片覆盖问题(4), 如何防止同一个用户上传的文件名相同问题 *///2、获取文件大小、格式等//获取文件的大小$file_size=$_FILES['myfile']['size'];if($file_size>2*1024*1024){echo "文件过大,不能上传大于2m文件";exit();}//获取文件的类型$file_type=$_FILES['myfile']['type'];if (($file_type!="image/gif")&&($file_type!="image/jpeg")&&($file_type!="image/jpg")    &&($file_type!="image/pjpeg")&&($file_type!="image/x-png")&&($file_type!="image/png")){echo "文件类型只能是图片";exit();}//3、转存文件//is_uploaded_file() 函数检查指定的文件是否是通过 HTTP POST 上传的。    //如果文件是通过 HTTP POST 上传的,该函数返回 TRUE。if(is_uploaded_file($_FILES['myfile']['tmp_name'])){//要转存的文件$uploaded_file=$_FILES['myfile']['tmp_name'];//我们给每个用户动态的创建一个文件夹$user_path=$_SERVER['DOCUMENT_ROOT']."/file/upload/$username/";echo '要创建的文件目录:'.$user_path;//判断该用户是否已经有文件夹if(!file_exists($user_path)){    //如果不存在,创建该目录mkdir("$user_path",0777,true);} $file_true_name=$_FILES['myfile']['name'];/* strrpos() 函数查找字符串在另一字符串中最后一次出现的位置(区分大小写)。注释:strrpos() 函数是区分大小写的。相关函数:strpos() - 查找字符串在另一字符串中第一次出现的位置(区分大小写)stripos() - 查找字符串在另一字符串中第一次出现的位置(不区分大小写)strripos() - 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)语法strrpos(string,find,start)string必需。规定被搜索的字符串。find必需。规定要查找的字符。start可选。规定开始搜索的位置。 *//* substr() 函数返回字符串的一部分。注释:如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。语法substr(string,start,length)参数描述string必需。规定要返回其中一部分的字符串。start必需。规定在字符串的何处开始。正数 - 在字符串的指定位置开始负数 - 在从字符串结尾的指定位置开始0 - 在字符串中的第一个字符处开始length可选。规定要返回的字符串长度。默认是直到字符串的结尾。正数 - 从 start 参数所在的位置返回负数 - 从字符串末端返回 *///文件转存后的文件名$move_to_file=$user_path.time().rand(1,1000).substr($file_true_name,strrpos($file_true_name,".")); //转存文件//move_uploaded_file() 函数把上传的文件移动到新位置。        //如果成功该函数返回 TRUE,如果失败则返回 FALSE。if(move_uploaded_file($uploaded_file,iconv("utf-8","gb2312",$move_to_file))){echo $_FILES['myfile']['name']."转存ok<br/>";echo '文件上传后的具体路径:'.$move_to_file;}else{echo "文件转存失败";}}else{echo "文件上传失败";}?>


1 0
原创粉丝点击