php+iframe实现隐藏无刷新上传文件

2015-01-24信息快讯网
首先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) 
{ 
$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获取文件名后缀
windows环境下php配置memcache的具体操作步骤
使用迭代器 遍历文件信息的详解
php遍历所有文件及文件夹的方法深入解析
PHP之生成GIF动画的实现方法
深入eAccelerator与memcached的区别详解
解析PHP中如何将数组变量写入文件
PHP转换文件夹下所有文件编码的实现代码
php将gd生成的图片缓存到memcache的小例子
php set_time_limit()函数的使用详解
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
PHP命名空间(Namespace)的使用详解
关于Iframe如何跨域访问Cookie和Session的解决方法
PHP If Else(elsefi) 语句
mysqli_set_charset和SET NAMES使用抉择及优劣分析
PDO版本问题 Invalid parameter number: no parameters were bound
zend framework配置操作数据库实例分析
php 文本文件的读取效率
PHP中集成PayPal标准支付的实现方法分享
PHP备份数据库生成SQL文件并下载的函数代码
PHP __autoload函数(自动载入类文件)的使用方法
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
php代码收集表单内容并写入文件的代码
PHP中创建空文件的代码[file_put_contents vs touch]
Uncaught exception com_exception with message Failed to create COM object
PHP中strtotime函数使用方法分享
php读取mysql乱码,用set names XXX解决的原理分享
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
PHP的array_diff()函数在处理大数组时的效率问题
PHP中strtotime函数使用方法详解
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
PHP支持多种格式图片上传(支持jpg、png、gif)
Array of country list in PHP with Zend Framework
php利用iframe实现无刷新文件上传功能的代码
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
PHP全概率运算函数(优化版) Webgame开发必备
php dirname(__FILE__) 获取当前文件的绝对路径
©2014-2024 dbsqp.com