隐藏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)   {       $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);
时间: 2024-10-14 14:05:42

隐藏iframe无刷新上传文件的相关文章

利用iframe无刷新上传文件的坑

原文:利用iframe无刷新上传文件的坑 页面里经常要用到文件上传的功能,而且要求页面不刷新,先说一下原理:页面里放一个file控件和submit按钮,外面用form表单包住,给form表单加上对应的属性值,action.method.entype.name,到这一步,能上传文件了,但是这样上传文件会刷新页面,这不是我们想要的.我们要的是文件上传时不刷新页面,那么也简单,在页面里放一个iframe,设置它的宽高为0,这里有两个坑: 1.需要设置iframe的name值与form的target属性

iframe 无刷新上传文件

html端: <form action="/index.php?user&q=code/raise/upfile" id="photo_form" name="photo_form" encType="multipart/form-data" method="post" target="hidden_frame"> //好比新窗口_blank 旧(父)窗口就不会刷新

web 开发之js---巧用iframe实现jsp无刷新上传文件

首先要说的就是 ajax 是无法实现上传文件的,可以想一下ajax与后台通信都是通过传递字符串,怎么能传递文件呢?其实出于安全考虑js是不能操作文件的,所以就不要再说用ajax来实现文件的上传了,这是不可能的.    而本文实现的文件上传也是无页面刷新的,可以说是一种"类似AJAX"方法.    开始之前先说两句无关的,其实在ajax出现之前,web应用也可以是无刷新的,那时大多通过IFrame来做到这一点.当然Ajax出现之后,人们一窝蜂地投奔Ajax 的阵营了,iFrame 就乏人

iframe实现无刷新上传文件(转)

其实在ajax出现之前,web应用也可以是无刷新的,那时大多通过IFrame来做到这一点.当然Ajax出现之后,人们一窝蜂地投奔Ajax 的阵营了,iFrame 就乏人问津了.但是用iFrame来实现无刷新上传文件确实一个很好的选择. [1].[代码] [HTML]代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <html>   <body>      <form action="upload.jsp

异步无刷新上传文件并且上传文件可以带上参数

关于异步上传文件并且带上参数,网上有很多关于这样的插件,而我最喜欢用的插件是ajaxfileupload.js,该插件的代码如下: /*   131108-xxj-ajaxFileUpload.js 无刷新上传图片 jquery 插件,支持 ie6-ie10    依赖:jquery-1.6.1.min.js   主方法:ajaxFileUpload 接受 json 对象参数   参数说明:   fileElementId:必选,上传文件域ID   url:必选,发送请求的URL字符串   fi

ajax jsp 无刷新上传文件

本文实现的文件上传也是无页面刷新的,可以说是一种"类似AJAX"方法 开始之前先说两句无关的,其实在ajax出现之前,web应用也可以是无刷新的,那时大多通过IFrame来做到这一点.当然Ajax出现之后,人们一窝蜂地投奔Ajax 的阵营了,iFrame 就乏人问津了.但是用iFrame来实现无刷新上传文件确实一个很好的选择. ps:Ajax技术基本上可以说是由google公司带起来的,但少Gmail中上传文件用的还是 IFrame,所以使用IFrame来上传文件是最好的选择. 我在这

mvc中file无刷新上传文件

前言 上传文件应该是很常见必不可少的一个操作,网上也有很多提供的上传控件.今天遇到一个问题:input控件file无法进行异步无刷新上传.真真的感到别扭.所以就尝试这去处理了一下. 上传封装类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Web; n

Ajax 无刷新上传文件插件 uploadify 的使用

在表单中无法直接使用 Ajax 上传文件,解决的思路可以是使用插件无刷新地上传文件,返回文件上传后的地址,然后把该地址作为 Ajax 的参数传递给服务器端进行数据库处理.可以使用 uploadify 插件来实现该思路. 官方网站:http://www.uploadify.com 文档地址:http://www.uploadify.com/documentation/ 插件有 Flash 版 和 HTML5 版,项目中用到的是 Flash 版. 下载 Demo 并解压: 其中 index.php

form表单无刷新上传文件

很多时候,我们上传完文件之后,不想当前页面跳转,或者是刷新一下.那么我们需要怎么做呢? 首先,我们用的是最简单的form表单上传,提交方式.代码如下 <!--大家注意到这个form的target的了么?这个target属性的值frameFile,是form之后的 iframe的name值,这样的写法是让当前的form表单在提交表单内容的时候转交给iframe中进行页面 中表单处理,并且不会产生当前页面跳转!--> <form id="uploadForm" class