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

相关文章

CSS3 布局样式及其应用举例

《CSS3布局样式及其应用举例》CSS3的布局特性为前端开发者提供了无限可能,无论是Flexbox的一维布局还是Grid的二维布局,它们都能够帮助开发者以更清晰、简洁的方式实现复杂的网页布局,本文给... 目录深入探讨 css3 布局样式及其应用引言一、CSS布局的历史与发展1.1 早期布局的局限性1.2

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs

CSS引入方式和选择符的讲解和运用小结

《CSS引入方式和选择符的讲解和运用小结》CSS即层叠样式表,是一种用于描述网页文档(如HTML或XML)外观和格式的样式表语言,它主要用于将网页内容的呈现(外观)和结构(内容)分离,从而实现... 目录一、前言二、css 是什么三、CSS 引入方式1、行内样式2、内部样式表3、链入外部样式表四、CSS 选

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Spring Boot 常用注解整理(最全收藏版)

《SpringBoot常用注解整理(最全收藏版)》本文系统整理了常用的Spring/SpringBoot注解,按照功能分类进行介绍,每个注解都会涵盖其含义、提供来源、应用场景以及代码示例,帮助开发... 目录Spring & Spring Boot 常用注解整理一、Spring Boot 核心注解二、Spr

Java实现MinIO文件上传的加解密操作

《Java实现MinIO文件上传的加解密操作》在云存储场景中,数据安全是核心需求之一,MinIO作为高性能对象存储服务,支持通过客户端加密(CSE)在数据上传前完成加密,下面我们来看看如何通过Java... 目录一、背景与需求二、技术选型与原理1. 加密方案对比2. 核心算法选择三、完整代码实现1. 加密上

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f

Java Jackson核心注解使用详解

《JavaJackson核心注解使用详解》:本文主要介绍JavaJackson核心注解的使用,​​Jackson核心注解​​用于控制Java对象与JSON之间的序列化、反序列化行为,简化字段映射... 目录前言一、@jsonProperty-指定JSON字段名二、@JsonIgnore-忽略字段三、@Jso

在React聊天应用中实现图片上传功能

《在React聊天应用中实现图片上传功能》在现代聊天应用中,除了文字和表情,图片分享也是一个重要的功能,本文将详细介绍如何在基于React的聊天应用中实现图片上传和预览功能,感兴趣的小伙伴跟着小编一起... 目录技术栈实现步骤1. 消息组件改造2. 图片预览组件3. 聊天输入组件改造功能特点使用说明注意事项

Spring Boot 常用注解详解与使用最佳实践建议

《SpringBoot常用注解详解与使用最佳实践建议》:本文主要介绍SpringBoot常用注解详解与使用最佳实践建议,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、核心启动注解1. @SpringBootApplication2. @EnableAutoConfi