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上传下载的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did29314