php 入门级文件上传详解
上传文件我们少不了move_uploaded_file函数本函数检查并确保由 file 指定的文件是合法的上传文件(即通过 php 的 http post 上传机制所上传的),如果文件合法,则将其移动为由 newloc 指定的文件.
如果 file 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 false.
如果 file 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 false,此外还会发出一条警告.
先来看一个关于在上传关表单设置:
<html> <head> <title>a simple file upload form</title> </head> <body> <form enctype= "multipart/form-data" action= "<?print $_server['php_self']?>" method= "post" > <p> <input type= "hidden" name= "max_file_size" value= "102400" /> <input type= "file" name= "fupload" /><br/> <input type= "submit" value= "upload!" /> </p> </form> </body> </html>这样我们主设置的上传文件最大不能超过102400字节了,在php中要实现文件上传很简单如下代码:
if ( $_files [ 'fupload' ][ 'type' ] == "image/gif" ) { $source = $_files [ 'fupload' ][ 'tmp_name' ]; $target = "upload/" . $_files [ 'fupload' ][ 'name' ]; move_uploaded_file( $source , $target ); // or die ("couldn't copy"); $size = getimagesize ( $target ); $imgstr = "<p><img width=" $size [0] " height=" $size [1] " " ; $imgstr .= "src=" $target " alt=" uploaded image " /></p>" ; print $imgstr ; }这样就ko了,下面我们总结实例:
<html> <form enctype= "multipart/form-data" action= "" method= "post" > <input type= "hidden" name= "max_file_size" value= "6000000" /> <!--设置允许提交表单的最大字节数--> 文件上传: <input name= "file" type= "file" /> <input type= "submit" value= "上传" /> </form> </html> <? //处理程序 function extend( $file_name ) //定义获取文件的扩展名函数 { $extend = explode ( "." , $file_name ); $va = count ( $extend )-1; return strtolower ( $extend [ $va ]);} $dirname = "" ; //是否启用上一层路径,格式为:$dirname="";或$dirname="http://www.cnblogs.com/";等等与$dir组合使用,注意不要溢出根路径 $dir = 'upload/aa/bb' ; //设定上传目录,与上面的$dirname组合 $file = $_files [ 'file' ]; //从文件域表单获取文件 $filename = $file [ 'name' ] ; //获取文件全名 $c_filesize = $file [ 'size' ] ; //获取本地的文件大小 $extendname =extend( $filename ); //获取文件扩展名 if ( $c_filesize >200000000000) die ( "文件太大" ); //限制上传文件大小, 单位字节 //if($extendname!="jpg")die("只允许上传jpg格式的图片");//限制上传文件格式,去掉语句开头的两斜杠生效 if (! file_exists ( $dir )); //检查目录文件夹是否存在,不存在则建立新文件夹 { $v =split ( '[/.-]' , $dir ); for ( $i =0 ; $i < count ( $v ) ; $i ++) { $dirname = $dirname . $v [ $i ]; if (! file_exists ( $dirname )) mkdir ( $dirname ); $dirname = $dirname . "/" ;} } //目录创建完毕 ?> <? $dest = $dirname . date ( "ymdhis" , time()).rand(100000,999999). "." . $extendname ; //设置文件名为日期加上从100000到999999的随机数和扩展名 if ( file_exists ( $dest )) die ( "该文件已经存在" ); if (move_uploaded_file( $file [ 'tmp_name' ], $dest )) //调用文件上传函数 { $s_filesize = filesize ( $dest ); //获取服务器端的文件大小 echo "文件上传成功,<a href=" . $dest . ">查看文件地址</a>" ; echo "<br>本地文件名:" . $filename ; echo "<br>远端文件名:" . $dest ; echo "<br>大 小:" . ceil ( $s_filesize /1024). " kb" ; echo "<br>扩展名:" . $extendname ; echo "<br>大 小:" . $c_filesize . " byte" ;} else { echo "还未进行文件上传" ;} ?>总结了文件上传的错误代码:
upload_err_ok没有错误。
upload_err_ini_size的上传的文件超过最高价值存在中指定的文件。
upload_err_form_size的上传的文件超过最高价值所指定的max_file_size隐藏的部件。
upload_err_partial的文件上传被取消了,只有部分的文件被上传。
upload_err_nofile没有文件被上传.
查看更多关于php 入门级文件上传详解 - php上传下载的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did29389