commons-fileupload和dwr实现带有进度条的文件上传
来源:互联网 发布:2017全国进出口数据 编辑:程序博客网 时间:2024/05/16 07:20
使用commons-fileupload和DWR实现带有进度条的上传
1. 增加jar: commons-fileupload.jar, commons-io.jar, dwr.jar
2. upload.jsp页面中增加:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"/><meta http-equiv="Content-Type" content="text/html; charset=GBK"/> <title>视频上传</title>
<script src="js/upload.js" type="text/javascript"></script>
<script src='dwr/interface/UploadMonitor.js'> </script>
<script src='dwr/engine.js'> </script>
<script src='dwr/util.js'> </script></head>
<body>
<form action="upload" name="newForm" enctype="multipart/form-data" method="post" onsubmit="return startProgress(); ">
地址:<input type="file" name="file1 " maxlength="100" id="file1" />
<input name="submit22" type="submit" value="上传" id="uploadbutton" />
</form>
<div id="ppop" style="font-size:50px;color:red;"></div> <br/><div id="progressBar" style="display: none;">
<div style="width:189px; height:13px; background:url(images/glod_bg.gif) no-repeat center;align:left;" align="left">
<div id="eProgress" style="width:1%; height:9px; background:url(images/glod.gif) repeat-x center; margin:2px;align:left;" align="left"> </div>
</div>
</div>
</body>
</html>
3. 在images/下面引入:gold_bg.gif, glob.gif两个图片。
4. 引入upload.js:( 控制进度条的主要程序)
function refreshProgress() {UploadMonitor.getUploadInfo(updateProgress); }
function updateProgress(uploadInfo) {
if (uploadInfo.inProgress) {
document.getElementById('uploadbutton').disabled = true; document.getElementById('file1').disabled = true;
var fileIndex = uploadInfo.fileIndex;
var progressPercent = Math.ceil((uploadInfo.bytesRead / uploadInfo.totalSize) * 100);
document.getElementById('eProgress').style.width = progressPercent + '%';
document.getElementById('ppop').innerHTML=progressPercent + '%'; window.setTimeout('refreshProgress()', 3000);
} else {
document.getElementById('uploadbutton').disabled = false;
document.getElementById('file1').disabled = false;
}
return true;
}
function startProgress() {
var s = document.newForm.file1.value ;
var i = s.lastIndexOf(".");
var var1 = s.substring(i+1) ;
if(var1 != "asf" && var1 !="wmv" && var1 !="avi" && var1 !="mpeg" && var1 !="mpg" && var1 !="rm" && var1 !="rmvb" && var1 !="vob" && var1 !="3gp" && var1 !="mp4" && var1 !="swf" && var1 !="flv") {
alert("文件格式不是视频格式,请重新选择文件!!");
return false;
}document.getElementById('progressBar').style.display = 'block';
document.getElementById('uploadbutton').disabled = true;
// wait a little while to make sure the upload has started ..window.setTimeout("refreshProgress()", 1500); return true;
}
5. dwr.xml中增加:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd"> <dwr>
<allow>
<create creator="new" javascript="UploadMonitor">
<param name="class" value="com.puckasoft.video.upload.UploadMonitor"/>
</create><convert converter="bean" match="com.puckasoft.video.upload.UploadInfo"/>
</allow> </dwr>
6. copy文件到com.puckasoft.video.upload包下面。(一共7个java文件)
7. UploadFile.java中的代码:
public class UploadFile extends HttpServlet {
protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String tempDirectory = Constant.uploadFileTemp; // 必须加后面的斜杠
String fileDirectory = this.getServletContext().getRealPath("\\vfile")+"\\";; // where the upload file saved
String outFileName = null;
try {
UploadOutputStreamListener uploadOutputStreamListener = new UploadOutputStreamListener(request, 1);
int sizeThreshold = 1024 * 64; //写满该大小的缓存后,存入硬盘中。
File repositoryFile = new File(tempDirectory);
FileItemFactory factory = new MonitoredDiskFileItemFactory( sizeThreshold, repositoryFile, uploadOutputStreamListener);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(500 * 1024 * 1024); // set every upload file'size less than 500M
List items = upload.parseRequest(request); //这里开始执行上传
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next(); //FileItem就是表示一个表单域。
if(item.isFormField()){ //isFormField方法用于判断FileItem是否代表一个普通表单域(即非file表单域)
System.out.println(item.getFieldName());
}else {
String fieldName = item.getFieldName(); //获取表单域name属性的值
String fileName = item.getName(); //返回该文件在客户机上的文件名。e.g: d:/video/1.wmv
String filesize = String.valueOf(item.getSize());
int site = fileName.lastIndexOf("\\");
if (site!=-1) {
fileName = fileName.substring(site + 1);
}
String fileType = fileName.substring(fileName.lastIndexOf("."));
String absoluteName=new Date().getTime()+fileType ; //存储在本地硬盘上的文件名
outFileName = fileDirectory + absoluteName;
File uploadedFile = new File(outFileName); item.write(uploadedFile); request.setAttribute("videoFilePath", absoluteName); } }
} catch (Exception e) {
e.printStackTrace();
}
rd.forward(request, response); //成功后的跳转
}
}
- commons-fileupload和dwr实现带有进度条的文件上传
- 利用apache的Commons-fileupload和Ajax实现文件上传进度条
- commons-fileupload 文件上传进度条
- commons-fileupload实现文件上传,可多文件上传和实现进度条
- Commons Fileupload+Servlet+JQuery实现文件上传进度条
- 采用commons-fileUpload ,ajax实现文件上传进度条
- 使用commons-fileupload实现文件的上传
- commons-fileupload 实现文件上传
- Commons-Fileupload 实现文件上传
- Commons-FileUpload实现文件上传
- commons-fileupload实现文件上传
- 利用commons-fileupload 实现文件上传终极版及commons-fileupload和commons-io包关系
- 利用commons-fileupload 实现文件上传终极版及commons-fileupload和commons-io包关系
- 利用commons-fileupload 实现文件上传终极版及commons-fileupload和commons-io包关系
- Commons-fileupload 文件的上传
- 使用commons-fileupload实现单个和多个文件上传
- 使用commons-fileupload实现单个和多个文件上传
- 使用commons-fileupload实现单个和多个文件上传
- 以消息为基础,以事件驱动之
- ubuntu下用vi打开文件,方向键和退格键都不能用的解决办法
- android gradle include so libs
- A FLASH Bootloader for PIC16 and PIC18 Devices--硬译(五)
- C/C++ union用法(转)
- commons-fileupload和dwr实现带有进度条的文件上传
- 短语、直接短语、句柄、素短语
- C#将datatable生成easyui的绑定tree 的json数据格式
- struts框架中使用tiles组件代码实例
- hdu 1429搜索
- c# 使用FileStream打开并清空文件、将一文件内容另存为到新文件
- ImageButton组件的应用
- 大数据量采用什么方式建表
- typedef define