最近在做如何实现文件上传的相关工作,查阅了很多资料,发现网上写的都不是很直观,且调试复杂,经实验成功。
把form的target设为页面里一个看不见的iframe,这样上传时候就不会刷新页面了,比如 :
<form action="uploadFile" method="post" enctype="multipart/form-data" target="upload">
<input id="uploadfile" name="uploadfile" type="file"/><button>上传至FTP</button>
</form>
<iframe name="upload" style="display:none"></iframe>
后台方法代码如下:
public void uploadFile(HttpServletRequest request) throws IOException {
                //创建文件处理工厂,用于生成FileItem对象
DiskFileItemFactory difactory = new DiskFileItemFactory();
//设置缓存大小,如果上传问价超过缓存大小,将使用临时目录作为缓存
difactory.setSizeThreshold(1024*1024);
//设置处理工厂缓存的临时目录,此目录下的文件需要手动删除
// String realdir = request.getContextPath();//当前应用程序根路径
// System.out.println("realdir------------------"+realdir);
String dir = "D:/fileupload";
File filedir = new File(dir+"filetemp");
if(!filedir.exists()){
filedir.mkdir();
}
difactory.setRepository(filedir);
//设置文件实际保存的目录
String userdir = dir + "files";
File fudir = new File(userdir);
if(!fudir.exists()){
fudir.mkdir();
}
//创建request的解析器,它会将数据封装到FileItem对象中
ServletFileUpload sfu = new ServletFileUpload(difactory);
//解析保存在request中的数据并返回list集合
List list = null;
try{
list = sfu.parseRequest(request);
}catch(FileUploadException e){
e.printStackTrace();
}
//遍历list集合,去除每一个输入项的FileItem对象,并分别获取数据
for(Iterator it = list.iterator();it.hasNext();){
FileItem fi = (FileItem)it.next();
if(fi.isFormField()){
System.out.println("FileFieldName"+fi.getFieldName());
System.out.println("FileString--->"+fi.getString());
}else{
//由于客户端项服务器发送的文件时客户端的全路径,我们只需文件
String filename = fi.getName();
// int index = filename.lastIndexOf("\\");
// if(index != -1){
// filename = filename.substring(index+1);
//向服务器写出文件
InputStream in = fi.getInputStream();
FileOutputStream fos = new FileOutputStream(fudir+"/"+filename);
byte[] buf = new byte[1024];
int len = -1;
while((len = in.read(buf))!=-1){
fos.write(buf,0,len);
}
//关闭流
if(in!=null){
try{
in.close();
}finally{
if(fos!=null){
fos.close();
}
}
}
// }
}
}
}

java实现web文件无刷新上传的更多相关文章

  1. 文件无刷新上传(swfUpload与uploadify)

    文件无刷新上传并获取保存到服务器端的路径 遇到上传文件的问题,结合之前用到过的swfUpload,又找了一个无刷新上传文件的jquery插件uploadify,写篇博客记录一下分别介绍这两个插件的实现 ...

  2. SpringMVC结合ajaxfileupload.js实现文件无刷新上传

    直接看代码吧,注释都在里面 首先是web.xml <?xml version="1.0" encoding="UTF-8"?> <web-ap ...

  3. SpringMVC结合ajaxfileupload文件无刷新上传

    jQuery没有提供ajax的文件上传,我们可以通过ajaxfileupload实现ajax文件的上传.其实ajaxfileupload文件上传特别的简单.下面就演示一下在SpringMVC中实现aj ...

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

    首先要说的就是 ajax 是无法实现上传文件的,可以想一下ajax与后台通信都是通过传递字符串,怎么能传递文件呢?其实出于安全考虑js是不能操作文件的,所以就不要再说用ajax来实现文件的上传了,这是 ...

  5. ajax +jsp+iframe无刷新上传文件[转]

    http://hi.baidu.com/zj360202/blog/item/f23e3711f929c774cb80c475.html ajax jsp 无刷新上传文件 2009-10-26 16: ...

  6. ajaxfileupload.js插件结合一般处理文件实现Ajax无刷新上传

    先上几张图更直观展示一下要实现的功能.本功能主要通过Jquery ajaxfileupload.js插件结合ajaxUpFile.ashx一般应用程序处理文件实现Ajax无刷新上传功能,结合NPOI2 ...

  7. Jquery ajaxfileupload.js结合.ashx文件实现无刷新上传

    先上几张图更直观展示一下要实现的功能,本功能主要通过Jquery ajaxfileupload.js插件结合ajaxUpFile.ashx一般应用程序处理文件实现Ajax无刷新上传功能,结合NPOI2 ...

  8. jquery ajax php 无刷新上传文件 带 遮罩 进度条 效果的哟

    在很多项目中都会叫用户上传东西这些的,自从接触了jquery 和ajax之后就不管做什么,首先都会想到这个,我这个人呢?是比较重视客户体验的,这次我这边负责的是后台板块,然后就有一块是要求用户上传照片 ...

  9. $_FILES参数详解及简单<form>表单无刷新上传文件

    $_FILES:经由 HTTP POST 文件上传而提交至脚本的变量,类似于旧数组$HTTP_POST_FILES 数组(依然有效,但反对使用)详细信息可参阅 POST方法上传 $_FILES数组内容 ...

随机推荐

  1. JDBC中PreparedStatement和Statement的区别

    共同点: PreparedStatement和Statement都是用来执行SQL查询语句的API之一. 不同点: 在PreparedStatement中,当我们经常需要反复执行一条结构相似的sql语 ...

  2. [转]jQuery插件开发精品教程,让你的jQuery提升一个台阶

    原文链接:http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html 要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其 ...

  3. php随机获取金山词霸每日一句

    header('Content-Type:text/html; charset=utf-8'); $nowyear=date("Y"); $nowmouth = date('m') ...

  4. Python学习笔记九-文件读写

    1,读取文件: f=open('目录','读写模式',encoding='gbk,error='egiong') 后三项可以不写但是默认是' r'读模式:open函数打开的文件对象会自动加上read( ...

  5. 初识cross apply & outer apply

    1. 2. 3.参考地址: http://blog.csdn.net/htl258/article/details/4537421

  6. NSString、NSData、char* 类型之间的转换-备

    1. NSString转化为UNICODE String: (NSString*)fname = @“Test”; char fnameStr[10]; memcpy(fnameStr, [fname ...

  7. [LA] 2031 Dance Dance Revolution

    Dance Dance Revolution Time limit: 3.000 seconds Mr. White, a fat man, now is crazy about a game nam ...

  8. Quartus DSE 初步应用

    介绍 Design Space Explorer (DSE) is a program that automates the process of finding the optimal collec ...

  9. thinkpad t530 centos 6.4 有线网卡 设置

    由于新装的系统没有安装网卡驱动,各大厂商的标准又不一样,有的电脑在linux下不用安装无线网卡驱动,而很不幸,我的电脑是ret的网卡,只能自行安装,在安装无线网卡的过程中使用到了chkconfig的命 ...

  10. hdu1561-The more, The Better(树形dp)

    Problem Description ACboy很喜欢玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中ACboy允许攻克M个城堡并获得里面的宝物.但由于地理位置原因,有 ...