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);
}
}