JQuery、ajaxFileUpload、Struts2和注解异步上传文件

本文主要是介绍JQuery、ajaxFileUpload、Struts2和注解异步上传文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近,公司要求做的一个项目涉及到文件上传,因为页面同时有四个上传按钮,要求是无页面刷新,所以想到了用Jquery的Ajax进行上传,但是由于本人 没查到JQuery的文件上传组件,因此就去网上搜索,找到了一个很好的组件ajaxFileUpload,利用此组件成功实现了异步文件上传!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
第一步:需要导入jquery-1.7.2.min.js、ajaxfileupload.js两个文件,在jsp页面引入的顺序必须是jquery-1.7.2.min.js在先,ajaxfileupload.js在后,因为ajaxfileupload.js依赖与jquery包,所以你懂得!
  jsp页面代码:
<!-- lang: html -->
< button id = "uploadSubmit" type = "submit" class = "btn btn-sm btn-info col-md-1 col-md-offset-1" onclick = "FileUpload('uploadSubmit');" >
                     < span class = "glyphicon glyphicon-upload" ></ span >Upload
                 </ button >
js代码:
<!-- lang: js -->
function FileUpload(buttonId) {
$.ajaxFileUpload({
     url : 'fileUpload!upload',// 用于文件上传的服务器端请求地址
     type : "post",
     dataType : "json",
     timeout : 1000,
     secureuri : false,// 一般设置为false
     fileElementId : uploadId,// 文件上传空间的id属性 < input type = "file" id = "uploadId" />
     error : function(XMLHttpRequest, textStatus, errorThrown) {
     },
     success : function(data) {
     }
});

}

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
<!-- lang: java -->
package cn.caculate.web.action;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.springframework.beans.factory.annotation.Autowired;
import cn.caculate.service.upload.IFileUploadService;
import com.opensymphony.xwork2.ActionSupport;
@Action ( "fileUpload" )
@InterceptorRefs (value = { @InterceptorRef ( "fileUploadStack" ) })
@Results ({ @Result (name = "jsonType" , type = "json" ) })
public class CopyOfFileUploadAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private static final int BUFFER_SIZE = 16 * 1024 ;
/**
  * 需要上传的文件
  */
private File upload;
/**
  * 上传文件的类型
  */
private String uploadContentType;
/**
  * 文件名
  */
private String uploadFileName;
/**
  * 上传之后的文件名
  */
private String storageFileName;
/**
  * 文件上传的路径
  */
public String path = ServletActionContext.getServletContext().getRealPath(
         File.separator + "WEB-INF" + File.separator + "file" );
/**
  * 新文件上传
  *
  * @return
  */
public String upload() {
     try {
         // 将Struts2自动封装的文件名赋给要写入的文件
         storageFileName = uploadFileName;
         // 创建要写入的文件
         File storageFile = new File(path + "//" + storageFileName);
         copy(upload, storageFile);
         return "jsonType" ;
     } catch (Exception e) {
         e.printStackTrace();
     }
     return null ;
}
/**
  * 上传文件的主要方法
  *
  * @param src
  * @param dst
  * @return
  */
public boolean copy(File src, File dst) {
     try {
         InputStream in = null ;
         OutputStream out = null ;
         try {
             in = new BufferedInputStream( new FileInputStream(src),
                     BUFFER_SIZE);
             out = new BufferedOutputStream( new FileOutputStream(dst),
                     BUFFER_SIZE);
             byte [] buffer = new byte [BUFFER_SIZE];
             while (in.read(buffer) > 0 ) {
                 out.write(buffer);
             }
         } finally {
             if ( null != in) {
                 in.close();
             }
             if ( null != out) {
                 out.close();
             }
         }
     } catch (Exception e) {
         e.printStackTrace();
     }
     return true ;
}
public File getUpload() {
     return upload;
}
public void setUpload(File upload) {
     this .upload = upload;
}
public String getUploadContentType() {
     return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
     this .uploadContentType = uploadContentType;
}
public String getUploadFileName() {
     return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
     this .uploadFileName = uploadFileName;
}
public String getStorageFileName() {
     return storageFileName;
}
public void setStorageFileName(String storageFileName) {
     this .storageFileName = storageFileName;
}
public String getPath() {
     return path;
}
public void setPath(String path) {
     this .path = path;
}

}


这篇关于JQuery、ajaxFileUpload、Struts2和注解异步上传文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/937383

相关文章

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动

HTML input 标签示例详解

《HTMLinput标签示例详解》input标签主要用于接收用户的输入,随type属性值的不同,变换其具体功能,本文通过实例图文并茂的形式给大家介绍HTMLinput标签,感兴趣的朋友一... 目录通用属性输入框单行文本输入框 text密码输入框 password数字输入框 number电子邮件输入编程框

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

HTML5 中的<button>标签用法和特征

《HTML5中的<button>标签用法和特征》在HTML5中,button标签用于定义一个可点击的按钮,它是创建交互式网页的重要元素之一,本文将深入解析HTML5中的button标签,详细介绍其属... 目录引言<button> 标签的基本用法<button> 标签的属性typevaluedisabled

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建