一.sample.html(提交页面)
<form name="upfile_form" action="singertonUploadAction" method="POST" enctype="multipart/form-data">
<input type="file" name="upload_file" id="upload_file" onchange="checkFileSize(this);" />
<p>
<input type="submit" value="submit" />
</p>
<iframe name="check_file_frame" style="display:none;"></iframe>
</form>
二.
public class SingertonUploadForm extends ActionForm {
private FormFile upload_file;
public FormFile getUpload_file() {
return upload_file;
}
public void setUpload_file(FormFile upload_file) {
this.upload_file = upload_file;
}
}
三.
public class SingertonUploadAction extends Action {
private static String UPLOAD_FILE_PATH = "c:/";
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
SingertonUploadForm uploadForm = (SingertonUploadForm)form;
//得到上传的文件
FormFile uploadFile = uploadForm.getUpload_file();
//得到文件名
String fileName = uploadFile.getFileName();
//得到文件大小
int fileSize = uploadFile.getFileSize();
System.out.println("FileName = " + fileName);
System.out.println("FileSize=" + fileSize);
boolean result = true;
try{
//得到文件的输入流
InputStream is = uploadFile.getInputStream();
//上传文件
uploadFile(fileName,is);
}catch(IOException ex){
ex.printStackTrace();
//假如上传文件失败,设置一个失败的标记位
result = false;
}
if(result){
return mapping.findForward("success");
} else {
return mapping.findForward("fail");
}
}
/**
* 上传文件
* @param fileName
* @param is
* @throws IOException
*/
private void uploadFile(String fileName,InputStream is) throws IOException{
OutputStream os = new FileOutputStream(UPLOAD_FILE_PATH + fileName);
//8k缓存数据
byte[] buffer = new byte[1024 * 8];
//设置读进缓存的字节数
int len;
while((len=is.read(buffer))!=-1){
//将缓存数据写入磁盘
os.write(buffer,0,len);
}
//关闭输出流
os.close();
//关闭输入流
is.close();
}
}
四.类似ajax提交需要check_file.js
var fileForm = new Object();
function checkFileSize(fileObj) {
if(fileObj.value != "") {
var form = document.forms['upfile_form'];
//把form的原始数据缓存起来
fileForm.f = form;
fileForm.a = form.getAttribute("action"); //form.action 为一个静态的对象,所以这里要使用getAttribute方法取值
fileForm.t = form.target;
//请求服务器端
form.target = "check_file_frame";
//form.action = "./ajax.php?act=upload";
form.action = "singertonUploadAction.do";
//form.submit(); 其实上面的action已经会执行submit操作,这步可有可无
}
return false;
}
function ajax_callback(result) {
//还原form属性
fileForm.f.target = fileForm.t;
fileForm.f.setAttribute("action", fileForm.a);
//处理结果
switch(result) {
case 0:
alert("文件超过了200K或者没有选择文件,请重新上传!");
//todo somthing
default :
alert("合法");
//do somthing,如果你想使用这种方法实现真正的上传的话,那么在成功后把返回的文件路经存储在一个 input[hidden]里是个不错的办法
}
return ;
}
分享到:
相关推荐
在这个"struts1.2 图片上传下载 源代码"中,我们可以学习到如何利用Struts1.2框架来实现这一功能。 首先,我们需要了解Struts1.2中的ActionForm类。ActionForm是模型层与控制器层之间的桥梁,用于接收和封装用户的...
本系统采用经典的SSH(Struts1.2、Hibernate3.0、Spring2)框架与DWR(Direct Web Remoting)技术进行构建,实现了后端与前端的高效交互。 **Struts1.2** 是一款基于MVC(Model-View-Controller)设计模式的Java ...
### Struts 1.2 下实现文件上传进度条的关键知识点 #### 一、背景与目的 在基于Struts 1.2的Web应用中,实现文件上传时常常需要提供一个友好的用户界面来显示文件上传进度。这不仅提高了用户体验,还能够实时反馈...
这个系统采用了经典的Java技术栈,包括Struts1.2、Hibernate3.0、Spring2和DWR,这些都是在21世纪初非常流行的技术组合。 1. **Struts1.2**:Struts是Apache软件基金会下的一个MVC框架,主要用于构建企业级Java Web...
本项目使用的技术栈是Struts1.2、Hibernate3.0、Spring2以及Direct Web Remoting (DWR)。下面将详细阐述这些技术在系统中的作用。 1. **Struts1.2**:Struts是一个开源的MVC框架,用于构建Java Web应用程序。在OA...
Struts2.3.1.2-all 是一个针对Java Web开发者的重要工具,它是一个全面的Struts框架版本,集成了所有必要的组件、文档和示例,以支持开发人员进行高效且稳定的Struts应用构建。Struts是Apache软件基金会旗下的一个...
- `struts2-json-plugin-2.3.1.2.jar`: 提供JSON支持,使应用能够与AJAX或JSON格式的数据交互。 - `struts2-dojo-plugin-2.3.1.2.jar` (可能包含): 如果存在,提供与Dojo JavaScript库的集成,用于创建富客户端...
这些示例展示了如何在实际项目中运用Struts2的各种特性,包括但不限于配置文件的设置、Action类的编写、结果类型配置、拦截器的使用、国际化、文件上传下载、Ajax集成等。 1. **配置文件**:在Struts2中,`struts....
总结来说,"ajax上传组件带进度条"是通过Struts2框架和相关的第三方库实现的一种高级文件上传功能,它提升了用户在上传大文件时的体验,让用户能够实时看到文件上传的进度,从而提高应用的互动性和用户满意度。...
### Struts2文件上传与下载教程 #### 一、文件上传原理及实现 **1.1 基础概念** 文件上传是Web开发中的常见需求之一。在Struts2框架中,实现文件上传主要依赖于表单的`enctype`属性设置为`multipart/form-data`。...
Struts2的核心优势在于它能够简化Web应用的开发流程,并且支持多种编程模型和技术,如Ajax、拦截器、OGNL表达式等。 ##### 1.2 Struts2框架的核心组件 **1.2.1 核心概念** Struts2的核心概念包括Action、配置文件...
8.1.1 页面上:如何使用自定义结果组件构建Struts 2 Ajax应用程序 171 8.1.2 实现JSON结果类型 173 8.2 常用的结果类型 180 8.2.1 RequestDispatcher,也叫做dispatcher 180 8.2.2 ServletRedirectResult,也叫做...
##### 1.2 Struts2与Struts1的区别 - **设计理念**:Struts1采用的是单一Action模式,而Struts2则采用了多Action模式,使得代码更加模块化和易于维护。 - **配置方式**:Struts1主要依赖于XML文件进行配置,而...
#### 16.2 在Struts2中使用Ajax - **JSON数据格式**:通过Action返回JSON格式的数据。 - **异步请求**:使用jQuery等JavaScript库来发送异步请求。 以上就是关于“研磨Struts2”的主要知识点梳理,通过深入学习...
作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,如数据类型转换、文件上传和下载、提高Struts 2应用的安全性、调试与性能分析、FreeMarker、Velocity、Ajax,等等。跟随作者一道深入Struts 2,聆听...
Java OA办公自动化管理系统是一款基于SSH框架(Struts1.2、Hibernate3.0、Spring2)和DWR技术开发的企业级应用,旨在提高办公效率,实现无纸化办公。这个项目不仅提供了完整的源代码,还包含了数据库文件,适用于SQL...
综上所述,这个项目利用Struts、Hibernate和Spring构建了一个银行接口系统,通过JSON库处理数据交换,借助Commons IO库进行文件操作,使用Commons FileUpload库处理文件上传,并且使用Ajax技术优化用户界面的交互...
如数据类型转换、文件上传和下载、Struts2应用的安全性、调试与性能分析、FreeMarker、Velocily、Ajax,等等。跟随作者一道深入Struts2。聆听大量来之不易的经验之谈。你对Struts2开发框架的理解和应用水平都将更上...