好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php iframe实现无刷新文件上传 - php上传下载

php iframe实现无刷新文件上传

首先ajax不能上传文件,这误导了我有段时间,今晚睡不着就照着说明做了个无刷新上传文件,其实原理很简单,代码如下:

< form   enctype = "multipart/form-data"   method = "POST"   target = "upload"   action = "http://localhost/class.upload.php"   >              < input   type = "file"   name = "uploadfile"   />              < input   type = "submit"   />    </ form >   < iframe   name = "upload"   style = "display:none" > </ iframe >  

和一般的<form>标签相比多了一个target属性罢了,用于指定标签页在哪里打开以及提交数据,如果没有设置该属性,就会像平常一样在本页重定向打开action中的url.

而如果设置为iframe的name值,即"upload"的话,就会在该iframe内打开,因为CSS设置为隐藏,因而不会有任何动静,若将display:none去掉,还会看到服务器的返回信息.

另外贴一下自己组织的类,代码如下:

class  upload  {      public   $_file ;        public   function  __construct(  $name  =null)     {          if ( is_null ( $name ) || !isset( $_FILES [ $name ]))               $name  = key( $_FILES );                        if (!isset( $_FILES [ $name ]))              throw   new  Exception( "并没有文件上传" );                       $this ->_file  =  $_FILES [ $name ];                   if (! is_uploaded_file ( $this ->_file[ 'tmp_name' ]))               throw   new  Exception( "异常情况" );          if ( $this ->_file[ 'error' ] !== 0)               throw   new  Exception( "错误代码:" . $this ->_file[ 'error' ]);          }      public   function  moveTo(  $new_dir )     {          $real_dir  =  $this ->checkDir( $new_dir );          return  move_uploaded_file( $this ->_file[ 'tmp_name' ],  $real_dir . '/' . $this ->_file[ 'name' ]);     }      private   function  checkDir( $dir )     { //开源代码phpfensi测试数据           $real_dir  =  realpath ( $dir );          if ( $real_dir  === false)              throw   new  Exception( "给定目录{$dir}不存在" );          if (! is_writable ( $real_dir ))              throw   new  Exception( "给定目录{$dir}不可写" );          return   $real_dir ;     }    } 

调用示例,代码如下:

$inputName  =   'uploadfile' ;     // 即<input type=[file" name="uploadfile" /> 中的name值,不填也行   $upload  =  new  upload( $inputName );  $new_dir  =  "/www" ;   // 将文件移动到的路径   $upload ->moveTo( $new_dir );

查看更多关于php iframe实现无刷新文件上传 - php上传下载的详细内容...

  阅读:44次