我们通过动态的创建iframe,修改form的target,来实现无跳转的文件上传。
 
具体的实现步骤
1.捕捉表单提交事件
2.创建一个iframe
3.修改表单的target,指向iframe
4.删除iframe
 
file.html代码如下:
<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action="upfile.php" method="post" id="upfileForm" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" name="submit" value="上传" />
</form>
<div id="result"></div>
</body>
<script type="text/javascript" src="./jquery.js"></script>
<script type="text/javascript">
$("#upfileForm").bind("submit", function() {
var ifrName = 'upfile' + Math.random();
var ifr = $("<iframe name='" + ifrName + "' width='0' height='0' frameborder='0'></iframe>");
$("body").append(ifr);
$(this).attr("target", ifrName);
});
</script>
</html>

upfile.php代码如下:

<?php
$uploadDir = './upload/';
if(!file_exists($uploadDir)) {
@mkdir($uploadDir, 0777, true);
}
$uploadFile = $uploadDir . basename($_FILES['file']['name']);
if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile)) {
echo "<script>parent.document.getElementById('result').innerHTML='OK';</script>";
} else {
echo "<script>parent.document.getElementById('result').innerHTML='NO';</script>";
}
 

最新文章

  1. Day10-线程进程
  2. 设计模式-GoF
  3. GCJ 2015-Qualification-B Infinite House of Pancakes 枚举,思路,误区 难度:3
  4. Xquartz远程访问linux
  5. ios专题 -block用法
  6. [React] React Router: Route Parameters
  7. 远离DoS攻击 Windows Server 2016发布DNS政策
  8. Oracle 安装报错 [INS-06101] IP address of localhost could not be determined 解决方法[转]
  9. Project 1 :创建链表与显示链表
  10. 适配器模式(Adapter Pattern)
  11. Javascript 堆栈的模拟
  12. java中的static代码块为什么只执行一次
  13. day20 python常用模块
  14. Table组件设置文字超出宽度显示省略号,鼠标悬停以悬浮框显示
  15. java第八周作业
  16. 学习笔记CB006:依存句法、LTP、n元语法模型、N-最短路径分词法、由字构词分词法、图论、概率论
  17. MySQL笔记--注意
  18. Windows下安装单机Kafka
  19. 【bzoj3717】[PA2014]Pakowanie 状压dp
  20. iOS分类底层实现原理小记

热门文章

  1. C++并发编程 02 数据共享
  2. git 上传本地代码到github 服务器
  3. mysq更新(六) 单表查询 多表查询
  4. Java网络编程详解
  5. string hashcode 解读
  6. 用strings命令查看kafka-log内容 过滤二进制编码
  7. leetcode476
  8. 3.为什么要使用struts2代替struts1.x
  9. django celery 定时任务
  10. parseInt 和 parseFloat 实现字符串转换为数字