文件上传 进度条 一次一个
jsp
<%@ page import="com.huadi.system.datas.SystemResource" %> <%-- Created by IntelliJ IDEA. User: 王涛 Date: 2006-9-6 Time: 11:08:30 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=gb2312" language="java" %> <% String resultid = request.getParameter("resultid"); String savename = request.getParameter("savename"); String displayname = request.getParameter("displayname"); %> <html> <head><title>文件上传页面</title> <script language="javascript" src="<%=SystemResource.DOMAIN%>/admin/js/commonajax.js"></script> <script language="javascript"> var savevalue = opener.document.getElementById('<%=savename%>').value; var ooflag = "0"; function initparams(_displayvalue) { if (_displayvalue.length < 2) { document.getElementById("filelist").innerHTML = ""; } var _disvalue = _displayvalue.split(";"); var filelist = ""; for (var i = 0; i < _disvalue.length; i++) { if (_disvalue[i] == "") continue; var data = _disvalue[i].split("="); filelist = filelist + "<li>" + data[0] + "(" + data[1] + "M) <a href=\"javascript:deleteFile('" + data[0] + "')\">删除</a></li>"; if (i < _disvalue.length - 1) filelist = filelist + "<br/>"; } document.getElementById("filelist").innerHTML = filelist; } function initoper(name, disname) { var lname = name.replace(/#/g, "%23"); return "<a href='<%=SystemResource.DOMAIN%>/actions/common/open-file.action?id=<%=resultid%>&name=" + lname + "'>" + name + "(" + disname + "M)</a>"; } function checkUpload() { if (form1.file.value == "") { alert("您还没有选择要上传的附件!"); return false; } return true; } function goupload(ff) { if (checkUpload()) { ooflag = ff; form1.action = "<%=SystemResource.DOMAIN%>/actions/common/upload.action?_result_id=<%=resultid%>"; form1.submit(); go(); } } function go() { createXmlHttp(); clearBar(); var ts = "ts=" + new Date().getTime(); var url = "<%=SystemResource.DOMAIN%>/actions/common/progress.action?ts=" + ts; xmlHttp.open("GET", url, true); xmlHttp.onreadystatechange = pollCallback; xmlHttp.send(null); } function pollCallback() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { var percent_complete = xmlHttp.responseText.substring(6); if (percent_complete.indexOf("error") != -1) { alert(percent_complete.substring(6)); statusreset(); return; } var progress = document.getElementById("progress"); var progressPersent = document.getElementById("progressPersent"); if (percent_complete.indexOf("percent") == 0) { var pc = percent_complete.substring(8); progress.style.width = pc + "%"; progressPersent.innerHTML = pc + "%"; setTimeout("go()", 300); } else { progress.style.width = "100%"; progressPersent.innerHTML = "100%"; document.getElementById("complete").innerHTML = "文件上传完毕!"; alert("上传成功!"); statusreset(); if (savevalue.length > 5) { savevalue += ";"; } savevalue += percent_complete; //截取字符串 var fileName1 = savevalue.indexOf("="); savevalue = savevalue.substring(0,fileName1); savevalue=savevalue; opener.document.getElementById('<%=savename%>').value = savevalue; opener.document.getElementById('<%=displayname%>').innerHTML = getDisvalue(savevalue); if (ooflag == "0") { window.close(); } else { initparams(savevalue); } } } } } function getDisvalue(value) { if (value.length < 2) { return ""; } var names = value.split(";"); var disvalues = ""; for (var i = 0; i < names.length; i++) { var name_size = names[i].split("="); disvalues = disvalues + initoper(name_size[0], name_size[1]); if (i < names.length - 1) { disvalues += "<br>"; } } return disvalues; } function statusreset() { document.getElementById("filepath").innerHTML = "<input type='file' name='file' size=\"60\" >"; document.getElementById("upload").style.visibility = "visible"; document.getElementById("progressBar").style.visibility = "hidden"; progress.style.width = "1%"; progressPersent.innerHTML = "1%"; } function deleteFile(filename) { deledfile = filename; var query = "<%=SystemResource.DOMAIN%>/actions/common/del-file.action?id=<%=resultid%>&name=" + filename ; createGetRequest(query, true); } function getFileName(name) { return name.substring(0, name.lastIndexOf("(")); } function doAction() { var rrmm = xmlHttp.responseText.substring(6); if (rrmm.indexOf("error") == -1) { var names = savevalue.split(";"); savevalue = ""; for (var i = 0; i < names.length; i++) { if (names[i].indexOf(rrmm) == 0) { continue; } if (savevalue.length > 2) { savevalue += ";"; } savevalue += names[i]; } initparams(savevalue); opener.document.getElementById('<%=savename%>').value = savevalue; opener.document.getElementById('<%=displayname%>').innerHTML = getDisvalue(savevalue); alert("删除成功!"); } else { alert("删除失败!"); } } function clearBar() { var progress_bar = document.getElementById("progressBar"); var progressPersent = document.getElementById("progressPersent"); document.getElementById("upload").style.visibility = "hidden"; var complete = document.getElementById("complete"); progress_bar.style.visibility = "visible"; progressPersent.innerHTML = " "; complete.innerHTML = "文件上传中........"; } </script> <link href="<%=SystemResource.DOMAIN%>/admin/css/pingtai.css" rel="stylesheet" type="text/css"> <link rel="stylesheet" type="text/css" href="<%=SystemResource.DOMAIN+"/css/style.css"%>"> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <style type="text/css"> <!-- body { background-color: #FFFFFF; } #filelist li { line-height: 20px; border-bottom: #154BA0 dashed 1px; background: #FFFFFF } .style2 { color: #FF0000 } --> </style> </head> <body class="bodycolor" style="margin-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px"> <table width="100%" border="0" align="center" cellPadding="3" cellSpacing="0" class="TableList"> <tr> <td align="left" class="TableHeader2">您现在的位置:文件上传页面</td> </tr> </table> <div id="upload"> <form action="" method="post" enctype="multipart/form-data" name="form1" id="form1" target="process"> <table style="width:100%" align="center" class="TableBlock"> <tr> <td colspan="2" nowrap align="left" class="TableData">已经上传附件列表>></td> </tr> <tr> <td colspan="2" class="TableData"> <div id="filelist"></div> </td> </tr> <tr> <td class="TableData" align="right" width="40%">选择文件:</td> <td class="TableData"> <div id="filepath"><input name="file" type="file" size="60"/> </div> </td> </tr> </table> <table style="width:100%" border="0" align="center" cellspacing="0" cellpadding="0" class="TableBlock"> <tr align="center" class="TableControl"> <td align="center" class="TableData" colSpan="5"> <INPUT class="SmallButton" type="button" value="确 定" onClick="goupload('0')"> <INPUT class="SmallButton" type="button" value="确定并附加另一个" onClick="goupload('1')"> </td> </tr> </table> </form> </div> <div id="progressBar" style="padding:0px;border:solid black 0px;visibility:hidden"> <table width="360" border="0" cellspacing="0" cellpadding="0" align="center"> <tr> <td align="center" class="style2" id="progressPersent">1%</td> </tr> <tr> <td> <table width="100%" cellpadding="0" cellspacing="0" style=" border-bottom: #333333 solid 1px; border-top:#333333 solid 1px; border-left:#333333 solid 1px; border-right:#333333 solid 1px"> <tr> <td> <table width="1%" border="0" cellspacing="0" cellpadding="0" bgcolor="#3980F4" id="progress"> <tr> <td> </td> </tr> </table> </td> </tr> </table> </td> </tr> <tr> <td height="30" align="center" id="complete">completed</td> </tr> </table> <script language="javascript"> initparams(savevalue); </script> </div> <iframe name="process" width="0" height="0"/> </body> </html>
package com.huadi.system.frame.actions; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.huadi.system.beans.FileUploadBean; import com.huadi.system.beans.upload.ProgressBar; import com.huadi.system.datas.SystemResource; import com.huadi.system.exception.FrameException; import com.huadi.system.mediadata.MediaData; import com.huadi.system.mediadata.UploadMediaData; import com.huadi.system.mediadata.model.UploadModel; /** * Created by IntelliJ IDEA. * * To change this template use File | Settings | File Templates. */ public class FileUploadAction extends ActionSupport { private UploadMediaData model = new UploadMediaData(); public String execute(HttpServletRequest request, HttpServletResponse response) throws FrameException { UploadModel um = model.getModel(); String dir = um.getDir(); String types = um.getTypes(); String maxSize = um.getMaxSize(); long size = 0; // 判断是否是绝对路径 if (dir.indexOf(":/") == -1) { dir = SystemResource.CONFIG_FOLDER.substring(0, SystemResource.CONFIG_FOLDER.lastIndexOf("\\WEB-INF\\")) + dir; } try { size = Long.parseLong(maxSize) * 1024 * 1024; } catch (NumberFormatException ex) { size = 10 * 1024 * 1024; } FileUploadBean upload = new FileUploadBean(dir, request); if (types.trim().length() > 0) { String[] ext = types.split(","); for (String s : ext) { upload.addTyps(s); } } upload.setMaxSize(size); ProgressBar bar = ProgressBar.getBar(request); try { upload.upload(); } catch (Exception ex) { synchronized (bar) { bar.setFinished(true); bar.setInfos("error=" + ex.getMessage()); } System.out.println("dd"); return "dd"; } String[] names = upload.getFileNames(); String[] sizes = upload.getFileSizes(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < names.length - 1; i++) { sb.append(names[i]); sb.append("="); sb.append(sizes[i]); sb.append(";"); } int index = names.length; if (index > 0) { sb.append(names[index - 1]); sb.append("="); sb.append(sizes[index - 1]); } synchronized (bar) { bar.setFinished(true); bar.setInfos(sb.toString()); } System.out.println("default"); return "default"; } public MediaData getMediaData() { return model; } }
package com.huadi.system.beans; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import javax.servlet.ServletException; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; import com.huadi.system.beans.upload.ProgressBar; import com.huadi.system.beans.upload.naming.FileNaming; import com.huadi.system.beans.upload.naming.NamingFactory; import com.huadi.system.frame.exception.UploadErrorException; /** * Created by IntelliJ IDEA. User: 王涛 Date: 2008-1-12 Time: 14:40:37 To change * this template use File | Settings | File Templates. */ public class FileUploadBean { private String saveDir; private String charset; private long maxSize = 1024 * 1024 * 10; private HttpServletRequest request; private Map<String, List<String>> paramList = new HashMap<String, List<String>>(); private Set<String> fileTypes; private String queryString; private String boundary = ""; private String[] fileNames; private String[] fileSizes; private int len = 0; private String userId = ""; private String userName = ""; private String nameScheam = "default"; private ProgressBar bar; public void setNameScheam(String nameScheam) { this.nameScheam = nameScheam; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getCharset() { return charset; } public void setCharset(String charset) { this.charset = charset; } public long getMaxSize() { return maxSize; } public void setMaxSize(long maxSize) { this.maxSize = maxSize; } public String getParameter(String name) { List<String> params = paramList.get(name); if (params == null || params.size() == 0) { return null; } return params.get(0); } public String[] getParameterValues(String name) { List<String> params = paramList.get(name); if (params == null || params.size() == 0) { return null; } String[] value = new String[params.size()]; return params.toArray(value); } public String getQueryString() { return queryString; } public String[] getFileNames() { return fileNames; } public FileUploadBean(String saveDir, HttpServletRequest request) { this.saveDir = saveDir; this.request = request; File file = new File(this.saveDir); if (!file.exists()) { file.mkdirs(); } boundary = this.request.getContentType().substring(30); // 得到内存中数据分界符 queryString = this.request.getQueryString(); bar = ProgressBar.getBar(request); int size = request.getContentLength(); bar.setTotal(size); } public void addTyps(String type) { if (fileTypes == null) { fileTypes = new HashSet<String>(); } fileTypes.add(type); } public void upload() throws ServletException, IOException, UploadErrorException { setCharset(request.getCharacterEncoding()); if (bar.getTotal() > maxSize) throw new IOException("文件已超过最大值:" + maxSize / (1024 * 1024) + "M"); if (!uploadFile(request.getInputStream())) { throw new UploadErrorException(); } } private boolean uploadFile(ServletInputStream servletinputstream) throws IOException, UploadErrorException { String line; byte[] buffer = new byte[256]; List<String> _size = new ArrayList<String>(); byte[] lastbuffer; int lastlen; List<String> tmpFileName = new ArrayList<String>(); long size = 0L; while ((line = readLine(buffer, servletinputstream, charset)) != null) { if (line.startsWith("Content-Disposition: form-data;")) { int i = line.indexOf("filename="); if (i >= 0) { String fName = getFileName(line); if (fName.equals("")) { continue; } if (fName.indexOf("\"") != -1) { fName = fName.replaceAll("\"", ""); } String ext = fName.substring((fName.lastIndexOf(".") + 1)); if ((fileTypes != null) && !fileTypes.contains(ext)) { throw new UploadErrorException("上传文件的类型不允许!!"); } String fn = fName.substring(0, fName.lastIndexOf(".")); tmpFileName.add(fName); FileNaming scheam = NamingFactory.getNameScheam(nameScheam); fName = scheam.getNextName(saveDir, fn, ext); while ((line = readLine(buffer, servletinputstream, charset)) != null) { if (line.length() <= 2) { break; } } File f = new File(fName); FileOutputStream dos = new FileOutputStream(f); lastbuffer = new byte[0]; lastlen = 0; while ((line = readLine(buffer, servletinputstream, null)) != null) { size += len; bar.setNowaData(size); if (line.indexOf(boundary) != -1) { if (lastlen > 2) { dos.write(lastbuffer, 0, lastlen - 2); } break; } dos.write(lastbuffer, 0, lastlen); lastbuffer = arraycopy(buffer, 0, len); lastlen = len; } BigDecimal bg = new BigDecimal((double) size / (1024 * 1024)).setScale(2, BigDecimal.ROUND_HALF_UP); scheam.saveInfos(userId, userName); _size.add(bg.floatValue() + ""); dos.close(); } else { String key = getKey(line); String value = ""; while ((line = readLine(buffer, servletinputstream, charset)) != null) { if (line.length() <= 2) { break; } } while ((line = readLine(buffer, servletinputstream, charset)) != null) { if (line.indexOf(boundary) != -1) { break; } value += line; } put(key, value.trim()); } } } if (queryString != null) { String[] each = queryString.split("&"); for (String s : each) { String[] nv = s.split("="); if (nv.length == 2) { put(nv[0], nv[1]); } } } fileNames = new String[tmpFileName.size()]; fileNames = tmpFileName.toArray(fileNames); fileSizes = new String[_size.size()]; fileSizes = _size.toArray(fileSizes); return fileNames.length != 0; } /** * 获取上传文件的大小 * * @return */ public String[] getFileSizes() { return fileSizes; } private String readLine(byte[] Linebyte, ServletInputStream servletinputstream, String charset) { try { len = servletinputstream.readLine(Linebyte, 0, Linebyte.length); if (len == -1) { return null; } if (charset == null) { return new String(Linebyte, 0, len); } else { return new String(Linebyte, 0, len, charset); } } catch (Exception _ex) { return null; } } private String getFileName(String line) { if (line == null) { return ""; } int i = line.indexOf("filename="); line = line.substring(i + 9).trim(); i = line.lastIndexOf("\\"); if ((i < 0) || (i >= (line.length() - 1))) { i = line.lastIndexOf("/"); if (line.equals("\"\"")) { return ""; } if ((i < 0) || (i >= (line.length() - 1))) { return line; } } return line.substring(i + 1, line.length() - 1); } private String getKey(String line) { if (line == null) { return ""; } int i = line.indexOf("name="); line = line.substring(i + 5).trim(); return line.substring(1, line.length() - 1); } private static byte[] arraycopy(byte[] source, int offset, int len) { byte[] target = new byte[source.length]; System.arraycopy(source, offset, target, offset, len); return target; } public void put(String key, String value) { List<String> params = paramList.get(key); if (params == null) { params = new ArrayList<String>(); paramList.put(key, params); } params.add(value); } }
package com.huadi.system.beans.upload; import javax.servlet.http.HttpServletRequest; /** * Created by IntelliJ IDEA. User: 王涛 Date: 2008-1-12 Time: 18:42:14 To change * this template use File | Settings | File Templates. */ public class ProgressBar { static String TAG = ".bar"; private long total = 10L; private long nowaData; private boolean finished = false; public String getInfos() { return infos; } public void setInfos(String infos) { this.infos = infos; } private String infos = ""; private ProgressBar() { } public static ProgressBar getBar(HttpServletRequest request) { ProgressBar bar = (ProgressBar) request.getSession(true).getAttribute( TAG); if (bar == null) { bar = new ProgressBar(); request.getSession(true).setAttribute(TAG, bar); } return bar; } public static void clear(HttpServletRequest request) { request.getSession(true).removeAttribute(TAG); } public long getTotal() { return total; } public void setTotal(long total) { this.total = total; } public long getNowaData() { return nowaData; } public void setNowaData(long nowaData) { this.nowaData = nowaData; } public boolean isFinished() { return finished; } public void setFinished(boolean finished) { this.finished = finished; } public String getPercent() { return (nowaData * 100) / total + ""; } public void clear() { this.total = 1; this.finished = false; } }
package com.huadi.system.mediadata.model; /** * Created by IntelliJ IDEA. User: 王涛 Date: 2008-1-12 Time: 19:55:34 To change * this template use File | Settings | File Templates. */ public class UploadModel { private String dir = ""; private String types; private String maxSize = "10"; private String nameScheam = "default"; public String getDir() { return dir; } public void setDir(String dir) { this.dir = dir; } public String getTypes() { return types; } public void setTypes(String types) { this.types = types; } public String getMaxSize() { return maxSize; } public void setMaxSize(String maxSize) { this.maxSize = maxSize; } public String getNameScheam() { return nameScheam; } public void setNameScheam(String nameScheam) { this.nameScheam = nameScheam; } }
package com.huadi.system.beans; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import javax.servlet.ServletException; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; import com.huadi.system.beans.upload.ProgressBar; import com.huadi.system.beans.upload.naming.FileNaming; import com.huadi.system.beans.upload.naming.NamingFactory; import com.huadi.system.frame.exception.UploadErrorException; /** * Created by IntelliJ IDEA. User: 王涛 Date: 2008-1-12 Time: 14:40:37 To change * this template use File | Settings | File Templates. */ public class FileUploadBean { private String saveDir; private String charset; private long maxSize = 1024 * 1024 * 10; private HttpServletRequest request; private Map<String, List<String>> paramList = new HashMap<String, List<String>>(); private Set<String> fileTypes; private String queryString; private String boundary = ""; private String[] fileNames; private String[] fileSizes; private int len = 0; private String userId = ""; private String userName = ""; private String nameScheam = "default"; private ProgressBar bar; public void setNameScheam(String nameScheam) { this.nameScheam = nameScheam; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getCharset() { return charset; } public void setCharset(String charset) { this.charset = charset; } public long getMaxSize() { return maxSize; } public void setMaxSize(long maxSize) { this.maxSize = maxSize; } public String getParameter(String name) { List<String> params = paramList.get(name); if (params == null || params.size() == 0) { return null; } return params.get(0); } public String[] getParameterValues(String name) { List<String> params = paramList.get(name); if (params == null || params.size() == 0) { return null; } String[] value = new String[params.size()]; return params.toArray(value); } public String getQueryString() { return queryString; } public String[] getFileNames() { return fileNames; } public FileUploadBean(String saveDir, HttpServletRequest request) { this.saveDir = saveDir; this.request = request; File file = new File(this.saveDir); if (!file.exists()) { file.mkdirs(); } boundary = this.request.getContentType().substring(30); // 得到内存中数据分界符 queryString = this.request.getQueryString(); bar = ProgressBar.getBar(request); int size = request.getContentLength(); bar.setTotal(size); } public void addTyps(String type) { if (fileTypes == null) { fileTypes = new HashSet<String>(); } fileTypes.add(type); } public void upload() throws ServletException, IOException, UploadErrorException { setCharset(request.getCharacterEncoding()); if (bar.getTotal() > maxSize) throw new IOException("文件已超过最大值:" + maxSize / (1024 * 1024) + "M"); if (!uploadFile(request.getInputStream())) { throw new UploadErrorException(); } } private boolean uploadFile(ServletInputStream servletinputstream) throws IOException, UploadErrorException { String line; byte[] buffer = new byte[256]; List<String> _size = new ArrayList<String>(); byte[] lastbuffer; int lastlen; List<String> tmpFileName = new ArrayList<String>(); long size = 0L; while ((line = readLine(buffer, servletinputstream, charset)) != null) { if (line.startsWith("Content-Disposition: form-data;")) { int i = line.indexOf("filename="); if (i >= 0) { String fName = getFileName(line); if (fName.equals("")) { continue; } if (fName.indexOf("\"") != -1) { fName = fName.replaceAll("\"", ""); } String ext = fName.substring((fName.lastIndexOf(".") + 1)); if ((fileTypes != null) && !fileTypes.contains(ext)) { throw new UploadErrorException("上传文件的类型不允许!!"); } String fn = fName.substring(0, fName.lastIndexOf(".")); tmpFileName.add(fName); FileNaming scheam = NamingFactory.getNameScheam(nameScheam); fName = scheam.getNextName(saveDir, fn, ext); while ((line = readLine(buffer, servletinputstream, charset)) != null) { if (line.length() <= 2) { break; } } File f = new File(fName); FileOutputStream dos = new FileOutputStream(f); lastbuffer = new byte[0]; lastlen = 0; while ((line = readLine(buffer, servletinputstream, null)) != null) { size += len; bar.setNowaData(size); if (line.indexOf(boundary) != -1) { if (lastlen > 2) { dos.write(lastbuffer, 0, lastlen - 2); } break; } dos.write(lastbuffer, 0, lastlen); lastbuffer = arraycopy(buffer, 0, len); lastlen = len; } BigDecimal bg = new BigDecimal((double) size / (1024 * 1024)).setScale(2, BigDecimal.ROUND_HALF_UP); scheam.saveInfos(userId, userName); _size.add(bg.floatValue() + ""); dos.close(); } else { String key = getKey(line); String value = ""; while ((line = readLine(buffer, servletinputstream, charset)) != null) { if (line.length() <= 2) { break; } } while ((line = readLine(buffer, servletinputstream, charset)) != null) { if (line.indexOf(boundary) != -1) { break; } value += line; } put(key, value.trim()); } } } if (queryString != null) { String[] each = queryString.split("&"); for (String s : each) { String[] nv = s.split("="); if (nv.length == 2) { put(nv[0], nv[1]); } } } fileNames = new String[tmpFileName.size()]; fileNames = tmpFileName.toArray(fileNames); fileSizes = new String[_size.size()]; fileSizes = _size.toArray(fileSizes); return fileNames.length != 0; } /** * 获取上传文件的大小 * * @return */ public String[] getFileSizes() { return fileSizes; } private String readLine(byte[] Linebyte, ServletInputStream servletinputstream, String charset) { try { len = servletinputstream.readLine(Linebyte, 0, Linebyte.length); if (len == -1) { return null; } if (charset == null) { return new String(Linebyte, 0, len); } else { return new String(Linebyte, 0, len, charset); } } catch (Exception _ex) { return null; } } private String getFileName(String line) { if (line == null) { return ""; } int i = line.indexOf("filename="); line = line.substring(i + 9).trim(); i = line.lastIndexOf("\\"); if ((i < 0) || (i >= (line.length() - 1))) { i = line.lastIndexOf("/"); if (line.equals("\"\"")) { return ""; } if ((i < 0) || (i >= (line.length() - 1))) { return line; } } return line.substring(i + 1, line.length() - 1); } private String getKey(String line) { if (line == null) { return ""; } int i = line.indexOf("name="); line = line.substring(i + 5).trim(); return line.substring(1, line.length() - 1); } private static byte[] arraycopy(byte[] source, int offset, int len) { byte[] target = new byte[source.length]; System.arraycopy(source, offset, target, offset, len); return target; } public void put(String key, String value) { List<String> params = paramList.get(key); if (params == null) { params = new ArrayList<String>(); paramList.put(key, params); } params.add(value); } }
<?xml version="1.0" encoding="gb2312"?> <result id="202042" name="视频新闻" order="40" class="jdj_vodeopath_fj" uri="/actions/common/upload"> <returns> <property name="default" value="" message="" type="forward"/> <property name="failed" value="" message="" type="forward"/> </returns> <interceptors/> <media-datas> <property name="dir" value="/webgroup/jdj/spxw"/> <property name="type" value=""/> <property name="size" value="100"/> <property name="scheam" value="default"/> </media-datas>
</result>
package com.huadi.system.mediadata; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.dom4j.Element; import com.huadi.system.configs.ActionContext; import com.huadi.system.mediadata.model.UploadModel; /** * Created by IntelliJ IDEA. User: 王涛 Date: 2008-1-12 Time: 14:08:58 To change * this template use File | Settings | File Templates. */ public class UploadMediaData extends AbstractMediaData { private Map<String, UploadModel> datas = new HashMap<String, UploadModel>(); public String getHtmlView(String uri, String resultid) { StringBuffer sb = new StringBuffer(MediaDataHelper .getTitle("文件上传元数据配置")); UploadModel um = datas.get(resultid); MediaDataHelper.uploadField(sb, um == null ? "" : um.getDir(), um == null ? "" : um.getTypes(), um == null ? "" : um .getMaxSize(), um == null ? "" : um.getNameScheam()); return sb.toString(); } public void initDatas(Element root, String resultid) { Element media = root.element("media-datas"); if (media == null) return; List list = media.elements("property"); UploadModel um = new UploadModel(); if (list != null && list.size() > 0) { for (Object o : list) { Element e = (Element) o; String name = e.attribute("name").getValue(); String value = e.attribute("value").getValue(); if (name.equals("dir")) { um.setDir(value); } else if (name.equals("type")) { um.setTypes(value); } else if (name.equals("size")) { um.setMaxSize(value); } else if (name.equals("scheam")) { um.setNameScheam(value); } } } datas.put(resultid, um); } public void initDatas(HttpServletRequest request, Element root) { String dir = request.getParameter("dir"); String type = request.getParameter("filetype"); String size = request.getParameter("maxsize"); String scheam = request.getParameter("scheam"); if (scheam == null) { scheam = "default"; } Element media = root.addElement("media-datas"); media.addElement("property").addAttribute("name", "dir").addAttribute( "value", dir); media.addElement("property").addAttribute("name", "type").addAttribute( "value", type); media.addElement("property").addAttribute("name", "size").addAttribute( "value", size); media.addElement("property").addAttribute("name", "scheam") .addAttribute("value", scheam); } public UploadModel getModel() { return datas.get(ActionContext.getActionContext().getResultid()); } public UploadModel getModel(String resultid) { return datas.get(resultid); } }
相关推荐
JSP文件上传 支持进度条显示,支持单个文件100M上传,JSP环境下的AJAX WEB上传程序,可一次上传多个文件,带进度条显示,上传过程中,若用户取消上传,则已经上传的文件均被删除。
一个带进度条的JSP文件上传程序,支持单个文件100M上传,JSP环境下的AJAX WEB上传程序,可一次上传多个文件,带进度条显示,上传过程中,若用户取消上传,则已经上传的文件均被删除。
(MVC)限制一次上传单个文件,显示进度条,可上传,可下载,完整demo可直接运行 (MVC)限制一次上传单个文件,显示进度条,可上传,可下载,完整demo可直接运行 (MVC)限制一次上传单个文件,显示进度条,可上传...
封装了一个ajax多文件上传,功能就是选择多个文件,ajax上传,支持进度条处理。 调用方式很简单,写一个json对象做为参数配置,设置要上传url以及事件处理函数,new一个AjaxUploadX对象,调用selectFiles方法选择...
带进度条的Flash多文件上传面板(SwfUploadPanel)(改进版) 这一次的更新是主要是解决了falshplayer10带来的安全性问题还导致不能上传文件. 但也带来一个问题,这个控件并不支持flashpayer8.仅仅支持flashplayer9,10. ...
flash带进度条的上传文件,支持一次选多个文件。 里面有Flash源码
JSP源码,上传下载,JSP文件上传实例,AJAX 基于AJAX的WEB上传程序,JSP环境,一次可上传多个文件,带进度条控制,单个文件最大可上传100M文件。
毕竟是第一次用 不是很熟悉 希望有人发现问题可以交流一下">这是根据uploadify3 2结合struts2搭建的文件上传环境 可以直接导入eclipse运行 每步实现基本都加了注释 以下是我碰到的问题: 1 判断session是否失效 ...
前面上传过一次,不能编辑了,重新上传一个。和前面那个相比,代码优化了一下:1)上传和下载完成的时候关闭FileStream(不关闭的话下载完成之后本地操作该文件会提示被占用),2)增加了连续下载多个文件(位于Form...
在Web开发中经常会遇到文件上传的功能,如果是小文件,很简单;如果遇到的客户需要上传几个G甚至几十G、几百G的文件,那么就出现问题了!为了安全起见,Mvc的Config设置根本就不允许上传这么大的文件。经过多次试验...
网上下载的swfupload控件, 实现了大文件,一次选择多文件上传 我已经修改成,选择按钮,和上传按钮分开了 非常方便,还显示单文件进度条,总文件进度条和大小
jQuery File Upload 是一个 jQuery 图片上传组件,支持多文件上传、取消、删除,上传前缩略图预览、列表显示图片大小,支持上传进度条显示;支持各种动态语言开发的服务器端。 1、多文件上传: 允许一次选择多个文件...
利用Ajax和Servlet实现文件上传,用来commons-fileupload和commons-io两个包。这两个包也在里边。东西做的很简单,但重点是能对这个方法有所了解就行了,有人想做的更炫的可以自行修改。希望能对大家有所帮助。如果...
内容索引:Delphi源码,系统相关,多线程,文件传输 Delphi多线程文件传输,并带有进度条适时显示功能,之前在网上见有不少朋友在寻找类似代码,所以帮助大家从我已有的程序中分享出一个,并重新编码,形成一个完整的...
多文件上传: 允许一次选择多个文件并同时上传。 拖放支持: 允许通过从桌面或文件管理器中将文件拖放到浏览器窗口中来上传文件。 上传进度条: 显示进度条,指示单个文件以及所有组合上载的上载进度。 取消上传...
请刷新页面,然后再试一次);"; ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", js, true); } else { // 让服务端知道我们还没有准备好.. uploadInfo.IsReady = false; try {...
一个免费的SL多文件上传,支持大文件上传 Features(特色): - Select multiple files to upload (选择多文件上传) - Upload multiple files at the same time (asynchonous)(一次上传多文件,异步刷新) - ...
Structs2+ExtJs多文件上传,解压后加入工程就可以使用,支持多选文件一次性加入列表,多文件上传,带有进度条和传输速度等等。。。。
功能:文件上传下载 服务器:tomcat , mysql5 工 具:java , jsp , javascript , html 说明: 以往的上传工具,要上传多个文件,就要选择文件多次(上传多少个文件就要选 择多少次),可真是让人眼花缭乱,这对...
八年文件管理器 2.6.7 更新内容: ...只有一个文件 方便上传 携带 初始密码:000000 上传后请及时修改 服务器探针 支持 编辑 UTF8(测试工作没有完成 不保证稳定性) 其他功能自行发觉吧!