SpringMvc3+extjs4实现上传与下载功能
发布时间 - 2026-01-11 02:06:13 点击率:次本文实例为大家分享了SpringMvc3+extjs4实现上传与下载的具体代码,供大家参考,具体内容如下

最近生活过的很充实,人一直在不停的忙碌着学习新东西。这是我最近遇到的问题,我找度娘n了很久,终于找到了解决方案!
前台代码:
<script>
Ext.onReady(function() {
Ext.create('Ext.form.Panel', {
title : '文件上传',
width : 400,
bodyPadding : 10,
frame : true,
renderTo : document.body,
items : [ {
xtype : 'filefield',
name : '文件',
fieldLabel : 'File',
labelWidth : 50,
msgTarget : 'side',
allowBlank : false,
anchor : '100%',
buttonText : '请选择文件...'
} ],
buttons : [ {
text : '上传',
handler : function() {
var form = this.up('form').getForm();
if (form.isValid()) {
form.submit({
url : '根路径/fileUploadDown/fileUpload',
waitMsg : '正在上传文件中...',
success : function(fp, o) {
Ext.Msg.alert('上传文件成功!');
}
});
}
}
} ]
});
});
</script>
后台代码:
/**
*记录返回结果*/
class ExtJSFormResult {
private boolean success;
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
}
public String toString() {
return "{success:" + this.success + "}";
}
}
class FileUploadBean {
private CommonsMultipartFile file;
public CommonsMultipartFile getFile() {
return file;
}
public void setFile(CommonsMultipartFile file) {
this.file = file;
}
}
/**
* 文件的上传与下载
* @author Administrator
*
*/
@Controller
@RequestMapping(value = "/fileUploadDown")
public class FileUploadAndDownController {
private static int countter=1; //定义一个计数器,用于上传文件的重命名
@Autowired
private ProAnnexDao<ProAnnex> proAnnextDao;
public void setProAnnextDao(ProAnnexDao<ProAnnex> proAnnextDao) {
this.proAnnextDao = proAnnextDao;
}
@RequestMapping(value="fileUpload",method = RequestMethod.POST)
public @ResponseBody String create(RedirectAttributes redirectAttributes,FileUploadBean uploadItem,
BindingResult result,HttpSession session){
//获取根路径
String uploadFolderPath = session.getServletContext().getRealPath("/");
ExtJSFormResult extjsFormResult = new ExtJSFormResult();
try {
if (result.hasErrors()) {
for (ObjectError error : result.getAllErrors()) {
System.err.println("Error: " + error.getCode() + " - "
+ error.getDefaultMessage());
}
// 设置ExtJS返回 - error
extjsFormResult.setSuccess(false);
return extjsFormResult.toString();
}
MultipartFile file = uploadItem.getFile();
String fileName = null;
InputStream inputStream = null;
OutputStream outputStream = null;
if(file.getSize()>0){
System.out.println("File Size:::" + file.getSize());
if(file.getSize()>5242880){
System.out.println("File Size:::" + file.getSize());
extjsFormResult.setSuccess(false);
return "error";
}
inputStream = file.getInputStream();
File newFile = new File(uploadFolderPath + "fileUpload/");
//如果文件路径不存在就新建一个
if(!newFile.exists()){
newFile.mkdirs();
}
//获取文件名
String name=file.getOriginalFilename();
//从数据库中查询存在此类文件名否
Long count=proAnnextDao.isRepeatName(name);
//如果存在一样的文件名,就进行从命名
if (count>0) {
name=name.substring(0, name.lastIndexOf("."))+"("+(countter++)+")"+name.substring(name.lastIndexOf("."));
}
fileName = uploadFolderPath + "fileUpload/" + name;
outputStream = new FileOutputStream(fileName);
int readBytes = 0;
byte[] buffer = new byte[10000];
while ((readBytes = inputStream.read(buffer, 0, 10000)) != -1) {
outputStream.write(buffer, 0, readBytes);
}
outputStream.close();
inputStream.close();
}
// 设置ExtJS返回 - sucsess
extjsFormResult.setSuccess(true);
} catch (Exception e) {
e.printStackTrace();
// 设置ExtJS返回 - error
extjsFormResult.setSuccess(false);
}
return extjsFormResult.toString();
}
}
springMvc.xml(此文件名可能跟项目的实际情况有区别)中的配置:
<!-- 上传文件,限制大小的配置 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--resolveLazily属性启用是为了推迟文件解析,以便在Upload中捕获文件大小异常--> <property name="resolveLazily" value="true"/> <property name="maxUploadSize" value="5242880" /> </bean> <!-- 将无法mapping到Controller的path交给default servlet handler处理 --> <mvc:default-servlet-handler/><!-- 使用默认的servlet来响应静态文件 --> <!-- 文件的上传与下载 --> <mvc:view-controller path="/" view-name="redirect:/fileUploadDown"/>
以上的就是上传文件了。
那下载呢?
下载比较简单,代码如下:
@RequestMapping("/downloadFile")
public void download(@Valid @ModelAttribute("downLoadName") String downLoadName,
HttpServletResponse response,HttpSession session,BindingResult result,HttpServletRequest request) throws IOException {
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
//获取文件的路径
String url=session.getServletContext().getRealPath("/")+"/fileUpload/"+downLoadName;
System.out.println(url);
File file=new File(url);
InputStream input = FileUtils.openInputStream(file);
byte[] data = IOUtils.toByteArray(input);
//System.out.println("文件名:"+downLoadName);
response.reset();
//设置响应的报头信息(中文问题解决办法)
response.setHeader("content-disposition","attachment;fileName="+URLEncoder.encode(downLoadName, "UTF-8"));
response.addHeader("Content-Length", "" + data.length);
response.setContentType("application/octet-stream; charset=UTF-8");
IOUtils.write(data, response.getOutputStream());
IOUtils.closeQuietly(input);
}
在界面上只要有一个连接地址:如:window.location.href="根路径/fileUploadDown/downfile/downLoadName="+name;这样就可以下载了.... 超连接的写法基本一样,这里就不多说了.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# SpringMvc3
# extjs4
# 上传
# 下载
# SpringMVC+Ajax实现文件批量上传和下载功能实例代码
# MyBatis与SpringMVC相结合实现文件上传、下载功能
# SpringMVC实现文件的上传和下载实例代码
# springMVC配置环境实现文件上传和下载
# 在SpringMVC框架下实现文件的上传和下载示例
# SpringMVC下实现Excel文件上传下载
# SpringMVC框架实现图片上传与下载
# SpringMVC实现文件上传和下载功能
# SpringMVC实现文件上传和下载的工具类
# SpringMVC实现上传下载文件
# 上传文件
# 说了
# 要有
# 不多
# 很久
# 这是我
# 不存在
# 此类
# 请选择
# 实际情况
# 我找
# 大家分享
# 解决办法
# 数据库中
# 可以下载
# 具体内容
# 大家多多
# 新建一个
# 重命名
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
如何注册花生壳免费域名并搭建个人网站?
JavaScript如何实现音频处理_Web Audio API如何工作?
网站制作企业,网站的banner和导航栏是指什么?
如何用美橙互联一键搭建多站合一网站?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
使用Dockerfile构建java web环境
Swift开发中switch语句值绑定模式
网站建设要注意的标准 促进网站用户好感度!
如何在阿里云域名上完成建站全流程?
如何快速登录WAP自助建站平台?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Laravel如何实现模型的全局作用域?(Global Scope示例)
如何为不同团队 ID 动态生成多个独立按钮
如何在阿里云香港服务器快速搭建网站?
如何快速查询网站的真实建站时间?
如何用搬瓦工VPS快速搭建个人网站?
Android 常见的图片加载框架详细介绍
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
Linux后台任务运行方法_nohup与&使用技巧【技巧】
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
教你用AI润色文章,让你的文字表达更专业
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
北京网站制作的公司有哪些,北京白云观官方网站?
如何破解联通资金短缺导致的基站建设难题?
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
独立制作一个网站多少钱,建立网站需要花多少钱?
C语言设计一个闪闪的圣诞树
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
教学论文网站制作软件有哪些,写论文用什么软件
?
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
Bootstrap整体框架之JavaScript插件架构
潮流网站制作头像软件下载,适合母子的网名有哪些?
javascript读取文本节点方法小结
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
魔方云NAT建站如何实现端口转发?
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
做企业网站制作流程,企业网站制作基本流程有哪些?
如何在 Pandas 中基于一列条件计算另一列的分组均值

