项目框架采用spring+hibernate+springMVC如果上传文件不想使用flash那么你可以采用HTML5;截图前段模块是bootstarp框架;不废话直接来代码;spring-mvc配置文件;效果截图如下:
详细实现如下:
1、mvc-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
<!-- 注解扫描包 -->
<context:component-scan base-package="com.yunfang.banks.controllers" />
<!-- 开启注解 -->
<mvc:annotation-driven />
<!-- 不拦截静态资源 -->
<mvc:default-servlet-handler />
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/js/" />
<mvc:mapping path="/js/**" />
<bean class="com.yunfang.banks.intreceptor.MyInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
<mvc:interceptors>
<bean class="com.yunfang.banks.intreceptor.MyInterceptor"></bean>
</mvc:interceptors>
<!-- 静态资源(js/image)的访问 -->
<mvc:resources location="/js/" mapping="/js/**" />
<!-- 定义视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=""></property>
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<!--下载的时候专用 -->
<bean
class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
<bean id="jsonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
<!-- 配置springMVC处理上传文件的信息,自定义上传,带进度条 -->
<bean id="multipartResolver" class="com.yunfang.banks.listener.CustomMultipartResolver">
<property name="defaultEncoding" value="utf-8" />
<property name="maxUploadSize" value="10000000000" />
</bean>
<!--
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8" />
<property name="maxUploadSize" value="10485760000" />
<property name="maxInMemorySize" value="40960" />
</bean>
-->
</beans>
2、实体工具类:Progress.Java
package com.yunfang.banks.listener;
public class Progress {
private long pBytesRead;
private long pContentLength;
private long pItems;
public long getpBytesRead() {
return pBytesRead;
}
public void setpBytesRead(long pBytesRead) {
this.pBytesRead = pBytesRead;
}
public long getpContentLength() {
return pContentLength;
}
public void setpContentLength(long pContentLength) {
this.pContentLength = pContentLength;
}
public long getpItems() {
return pItems;
}
public void setpItems(long pItems) {
this.pItems = pItems;
}
@Override
public String toString() {
return "Progress [pBytesRead=" + pBytesRead + ", pContentLength="
+ pContentLength + ", pItems=" + pItems + "]";
}
}
3、文件上传进度监听类:FileUploadProgressListener.java
package com.yunfang.banks.listener;
import javax.servlet.http.HttpSession;
import org.apache.commons.fileupload.ProgressListener;
import org.springframework.stereotype.Component;
@Component
public class FileUploadProgressListener implements ProgressListener {
private HttpSession session;
public void setSession(HttpSession session){
this.session=session;
Progress status = new Progress();//保存上传状态
session.setAttribute("status", status);
}
public void update(long pBytesRead, long pContentLength, int pItems) {
Progress status = (Progress) session.getAttribute("status");
try {
Thread.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
status.setpBytesRead(pBytesRead);
status.setpContentLength(pContentLength);
status.setpItems(pItems);
//System.out.println(">>>>>>>>>>>>>>>>>>>>"+status);
}
}
4、自定义扩展org.springframework.web.multipart.commons.CommonsMultipartResolver类,重写public MultipartParsingResult parseRequest(HttpServletRequest request) throws MultipartException方法:
CustomMultipartResolver.java
package com.yunfang.banks.listener;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.FileUploadException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import org.springframework.web.multipart.MultipartException;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
public class CustomMultipartResolver extends CommonsMultipartResolver {
@Autowired
private FileUploadProgressListener progressListener;
public void setFileUploadProgressListener(
FileUploadProgressListener progressListener) {
this.progressListener = progressListener;
}
@Override
@SuppressWarnings("unchecked")
public MultipartParsingResult parseRequest(HttpServletRequest request)
throws MultipartException {
String encoding = determineEncoding(request);
FileUpload fileUpload = prepareFileUpload(encoding);
progressListener.setSession(request.getSession());
fileUpload.setProgressListener(progressListener);
try {
List<FileItem> fileItems = ((ServletFileUpload) fileUpload).parseRequest(request);
return parseFileItems(fileItems, encoding);
}
catch (FileUploadBase.SizeLimitExceededException ex) {
throw new MaxUploadSizeExceededException(fileUpload.getSizeMax(), ex);
}
catch (FileUploadException ex) {
throw new MultipartException("Could not parse multipart servlet request", ex);
}
}
}
5、uploadController.java
@RequestMapping("UserControllers/progress")
public void uploadFile(HttpServletRequest request,HttpServletResponse response,
@RequestParam("file") CommonsMultipartFile file) throws IOException {
response.setContentType("text/html");
response.setCharacterEncoding("GBK");
PrintWriter out;
boolean flag = false;
if (file.getSize() > 0) {
//文件上传的位置可以自定义
flag = FileUploadUtil.upLoadFile(file, request);
}
out = response.getWriter();
if (flag == true) {
out.print("1");
} else {
out.print("2");
}
}
6、FileUploadUtil.java
import java.io.File;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.multipart.MultipartFile;
public class FileUploadUtil {
public static Boolean uploadFile(HttpServletRequest request, MultipartFile file) {
System.out.println("开始");
String path = request.getSession().getServletContext().getRealPath("upload");
String fileName = file.getOriginalFilename();
System.out.println(path);
File targetFile = new File(path, fileName);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
// 保存
try {
file.transferTo(targetFile);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
7、前台页面
<%@ page language="java" import="java.util.*" pageEncoding="Utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<link href="css/bootstrap.min.css" rel="stylesheet">
<style type="text/css">
.file-box {
position: relative;
width: 340px
}
.txt {
height: 22px;
border: 1px solid #cdcdcd;
width: 180px;
vertical-align: middle;
margin: 0;
padding: 0
}
.btn {
border: 1px solid #CDCDCD;
height: 24px;
width: 70px;
vertical-align: middle;
margin: 0;
padding: 0
}
.file {
position: absolute;
top: 0;
right: 80px;
height: 24px;
filter: alpha(opacity : 0);
opacity: 0;
width: 260px;
vertical-align: middle;
margin: 0;
padding: 0
}
</style>
<%--<script type="text/javascript">
function myInterval()
{
$("#progress").html("");
$.ajax({
type: "POST",
url: "<%=basePath%>UserControllers/getSessions",
data : "1=1",
dataType : "text",
success : function(msg) {
var data = msg;
console.log(data);
$("#pdiv").css("width", data + "%");
$("#progress").html(data + "%");
}
});
}
function autTime() {
setInterval("myInterval()", 200);//1000为1秒钟
}
</script>
--%>
<script type="text/javascript">
function UpladFile() {
var fileObj = document.getElementById("file").files[0]; // js 获取文件对象
var FileController = "UserControllers/progress"; // 接收上传文件的后台地址
// FormData 对象---进行无刷新上传
var form = new FormData();
form.append("author", "hooyes"); // 可以增加表单数据
form.append("file", fileObj); // 文件对象
// XMLHttpRequest 对象
var xhr = new XMLHttpRequest();
xhr.open("post", FileController, true);
xhr.onload = function() {
alert("上传完成!");
//$('#myModal').modal('hide');
};
//监听progress事件
xhr.upload.addEventListener("progress", progressFunction, false);
xhr.send(form);
}
function progressFunction(evt) {
var progressBar = document.getElementById("progressBar");
var percentageDiv = document.getElementById("percentage");
if (evt.lengthComputable) {
progressBar.max = evt.total;
progressBar.value = evt.loaded;
percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100)
+ "%";
}
}
</script>
</head>
<body style="width: 80%;height: 80%;margin: 0px auto;">
<div class="row bootstrap-admin-no-edges-padding">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<div class="text-muted bootstrap-admin-box-title">文件管理</div>
</div>
<div class="bootstrap-admin-panel-content">
<button class="btn btn-primary btn-lg" data-toggle="modal"
data-target="#myModal">上传</button>
<input type="text" id="test">
</div>
</div>
</div>
</div>
<!-- 模态框(Modal) -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">文件上传进度</h4>
</div>
<div class="modal-body">
<progress id="progressBar" value="0" max="100"
style="width: 100%;height: 20px; "> </progress>
<span id="percentage" style="color:blue;"></span> <br>
<br>
<div class="file-box">
<input type='text' name='textfield' id='textfield' class='txt' />
<input type='button' class='btn' value='浏览...' /> <input
type="file" name="file" class="file" id="file" size="28"
onchange="document.getElementById('textfield').value=this.value" />
<input type="submit" name="submit" class="btn" value="上传"
onclick="UpladFile()" />
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭
</button>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal -->
</div>
<script type="text/javascript"
src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# springmvc
# 上传进度条
# springmvc实现进度条
# springmvc下载进度条
# SpringMVC文件上传 多文件上传实例
# SpringMVC 文件上传配置
# 多文件上传
# 使用的MultipartFile的实例
# jquery.form.js框架实现文件上传功能案例解析(springmvc)
# SpringMvc MultipartFile实现图片文件上传示例
# 使用jQuery.form.js/springmvc框架实现文件上传功能
# SpringMVC使用MultipartFile实现文件上传
# MyBatis与SpringMVC相结合实现文件上传、下载功能
# springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
# SpringMVC文件上传的配置实例详解
# springmvc实现文件上传功能
# 上传
# 自定义
# 上传文件
# 文件上传
# 你可以
# 重写
# 表单
# 配置文件
# 文件管理
# 大家多多
# 进度条
# 模态
# Component
# implements
# session
# setSession
# Java
# apache
# HttpSession
# fileupload
相关文章:
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
如何在七牛云存储上搭建网站并设置自定义域名?
Swift开发中switch语句值绑定模式
网站制作话术技巧,网站推广做的好怎么话术?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
网站按钮制作软件,如何实现网页中按钮的自动点击?
公司网站制作价格怎么算,公司办个官网需要多少钱?
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
再谈Python中的字符串与字符编码(推荐)
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
如何选择靠谱的建站公司加盟品牌?
江苏网站制作公司有哪些,江苏书法考级官方网站?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
ui设计制作网站有哪些,手机UI设计网址吗?
Android滚轮选择时间控件使用详解
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何快速生成高效建站系统源代码?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
SQL查询语句优化的实用方法总结
如何用低价快速搭建高质量网站?
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
如何在建站之星网店版论坛获取技术支持?
高端网站建设与定制开发一站式解决方案 中企动力
如何高效搭建专业期货交易平台网站?
英语简历制作免费网站推荐,如何将简历翻译成英文?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
盐城做公司网站,江苏电子版退休证办理流程?
免费视频制作网站,更新又快又好的免费电影网站?
5种Android数据存储方式汇总
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
如何制作算命网站,怎么注册算命网站?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何快速查询域名建站关键信息?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
高防服务器:AI智能防御DDoS攻击与数据安全保障
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
定制建站价位费用解析与套餐推荐全攻略
沈阳制作网站公司排名,沈阳装饰协会官方网站?
如何用免费手机建站系统零基础打造专业网站?
微课制作网站有哪些,微课网怎么进?
如何通过虚拟主机快速完成网站搭建?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
PHP 500报错的快速解决方法
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
如何高效生成建站之星成品网站源码?
如何在云主机上快速搭建网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。