package web;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspFactory;
import javax.servlet.jsp.PageContext;
import Upload.Uploader;
import com.jspsmart.upload.Request;
/**
*
* @author 344761028@qq.com
* @version 1.0
*
*/
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 2450102559616913758L;
private static final String ENCODING = "utf-8";
private final String stateXMLversion = "<?xml version=\"1.0\" encoding=\""
+ ENCODING + "\" ?>";
private final String startXml = "<result>";
private final String endXml = "</result>";
// 最大上传文件大小为100MB
private final Long maxFileSize = 1024L * 1024L * 100L;
/**
* 构造请求
*/
public UploadServlet() {
super();
}
public void destroy() {
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
/**
* 文件上传服务,请求参数需用urlencode进行编码,编码方式为utf-8
* 请求参数 datatype: 指定返回的数据格式json|xml,默认返回json格式
* callbackurl: 将上传的结果返回的地址,当此参数为空的时候,直接输出结果到页面(json格式)
* cfunction: javascript回调的函数,当此参数为空的时候,系统默认为函数名为callback
* username: 用户名
* password: 密码
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String dataType = null;
StringBuilder sb = new StringBuilder();
Param param = null;
//.初始化
com.jspsmart.upload.SmartUpload su = new com.jspsmart.upload.SmartUpload();
JspFactory jsp1 = JspFactory.getDefaultFactory();
PageContext pageContext = jsp1.getPageContext(this, request, response,
null, true, 8192, true);
su.initialize(pageContext);
//文件大小设置为100MB
su.setMaxFileSize(maxFileSize);
try {
su.upload();
com.jspsmart.upload.File file = su.getFiles().getFile(0);
Uploader up = new Uploader(pageContext, request);
up.SetOriFileName(false);
up.setM_userFilename(null);
up.SaveFile(file);
if (null != dataType && dataType.equals("xml")) {
sb.append(stateXMLversion);
sb.append(startXml);
getSuccessXml(sb, up.GetFilePathRel());
sb.append(endXml);
} else {
getSuccessJson(sb, up.GetFilePathRel());
}
} catch (SecurityException se) {
if (null != dataType && dataType.equals("xml")) {
sb.append(stateXMLversion);
sb.append(startXml);
getMaxSizeFailXml(sb);
sb.append(endXml);
} else {
getMaxSizeFailJson(sb);
}
} catch (Exception se) {
if (null != dataType && dataType.equals("xml")) {
sb.append(stateXMLversion);
sb.append(startXml);
getOtherErrorXml(sb);
sb.append(endXml);
} else {
getOtherErrorJson(sb);
}
} finally {
//解码
param = this.warpParam(su.getRequest());
dataType = param.getDataType();
pageContext.getOut().clear();
pageContext.pushBody();
// 1.验证用户和密码
if (!chkUser(param.getUserName(), param.getPassword())) {
if (null != dataType && dataType.equals("xml")) {
sb.append(stateXMLversion);
sb.append(startXml);
getValideFailXml(sb);
sb.append(endXml);
this.writeToPageXml(sb.toString(), response);
} else {
getValideFailJson(sb);
this.writeToPageJson(sb.toString(), response);
}
return;
}
}
// 3.返回结果
String callbackurl = param.getCallBackUrl();
if(null == callbackurl || callbackurl.isEmpty())
{
if (null != dataType && dataType.equals("xml")) {
sb.append(stateXMLversion);
writeToPageXml(sb.toString(),response);
} else {
writeToPageJson(sb.toString(),response);
}
return;
}
//urlencode
String res = java.net.URLEncoder.encode(sb.toString(),ENCODING);
String cfunction = null == param.getCFunction() || param.getCFunction().isEmpty()?"callback":param.getCFunction();
response.sendRedirect(callbackurl+"?data="+res+"&callback="+ cfunction);
}
private void getValideFailJson(StringBuilder sb) {
sb.append("{\"flag\":\"2\",\"msg\":\"用户验证失败\", url:\"\"}");
}
private void getValideFailXml(StringBuilder sb) {
sb.append("<![CDATA[2|").append("用户验证失败|").append("]]>");
}
private void getSuccessJson(StringBuilder sb, String url) {
sb.append("{\"flag\":\"1\",\"msg\":\"上传成功\", url:\"" + url + "\"}");
}
private void getSuccessXml(StringBuilder sb, String url) {
sb.append("<![CDATA[1|上传成功|").append(url).append("]]");
}
private void getMaxSizeFailJson(StringBuilder sb) {
sb.append("{\"flag\":\"-1\",\"msg\":\"文件大小超过限制\", url:\"\"}");
}
private void getMaxSizeFailXml(StringBuilder sb) {
sb.append("<![CDATA[-1|文件大小超过限制|").append("]]");
}
private void getOtherErrorJson(StringBuilder sb) {
sb.append("{\"flag\":\"0\",\"msg\":\"上传失败,请稍后重试\", url:\"\"}");
}
private void getOtherErrorXml(StringBuilder sb) {
sb.append("<![CDATA[0|上传失败,请稍后重试|").append("]]");
}
/**
* 输出json结果到页面
*
* @param data
* 数据
* @param response
* reponse
*/
private void writeToPageJson(String data, HttpServletResponse response) {
response.setContentType("text/html;charset=" + ENCODING);
writeToPage(response, data);
}
private void writeToPageXml(String data, HttpServletResponse response) {
response.setContentType("text/xml");
writeToPage(response, data);
}
private void writeToPage(HttpServletResponse response, String data) {
response.setCharacterEncoding(ENCODING);
try {
OutputStreamWriter osw = new OutputStreamWriter(response
.getOutputStream(), ENCODING);
osw.write(data);
osw.flush();
osw.close();
} catch (UnsupportedEncodingException ue) {
} catch (IOException ie) {
}
}
public void init() throws ServletException {
// TODO 初始化
}
/**
* 验证请求
*
* @param u
* u
* @param p
* p
* @return
*/
private static boolean chkUser(String u, String p) {
return true;
}
private Param warpParam(Request request) {
String[] p = new String[5];
// 解码
p[0] = request.getParameter("datatype");
p[1] = request.getParameter("callbackurl");
p[2] = request.getParameter("cfunction");
p[3] = request.getParameter("username");
p[4] = request.getParameter("password");
// 解码
urlDecode(p);
return new Param(p[0], p[1], p[2], p[3], p[4]);
}
private static void urlDecode(String... str) {
for (int i = 0; i < str.length; i++) {
String v = str[i];
if (null == v || v.isEmpty()) {
continue;
}
try {
str[i] = java.net.URLDecoder.decode(v, "utf-8");
} catch (UnsupportedEncodingException ue) {
ue.printStackTrace();
}
}
}
/**
* 参数
*
* @author cbai
*
*/
class Param {
private String dataType;
private String callBackUrl;
private String cFunction;
private String userName;
private String password;
/**
*
* @param dataType
* 数据类型
* @param callBackUrl
* 返回的url
* @param cFunction
* 回调的java函数
* @param userName
* 用户名
* @param password
* 密码
*/
public Param(String dataType, String call
没有合适的资源?快使用搜索试试~ 我知道了~
swfupload 批量上传 网络整理
共1807个文件
gif:1444个
css:129个
png:91个
5星 · 超过95%的资源 需积分: 5 173 下载量 75 浏览量
2016-11-28
11:48:11
上传
评论
收藏 7.26MB ZIP 举报
温馨提示
工作要用到swfupload 自己从网络整理的列子全弄下来啦 从网络整理的批量上传
资源推荐
资源详情
资源评论
收起资源包目录
swfupload 批量上传 网络整理 (1807个子文件)
UploadServlet.class 9KB
Uploader.class 4KB
UploadAction.class 3KB
UploadServlet$Param.class 1KB
.classpath 1KB
.classpath 865B
org.eclipse.wst.common.component 494B
org.eclipse.wst.jsdt.ui.superType.container 49B
ext-all.css 240KB
ext-all-gray.css 230KB
ext-all.css 114KB
ext-all-notheme.css 99KB
xtheme-access.css 41KB
xtheme-blue.css 39KB
xtheme-gray.css 38KB
yourtheme.css 38KB
ux-all.css 17KB
form.css 12KB
grid.css 12KB
button.css 8KB
panel.css 8KB
tabs.css 8KB
grid.css 7KB
grid.css 7KB
grid.css 7KB
panel-reset.css 7KB
GroupTab.css 6KB
core.css 6KB
toolbar.css 6KB
layout.css 5KB
date-picker.css 5KB
tree.css 5KB
menu.css 4KB
tree.css 4KB
form.css 4KB
window.css 4KB
tree.css 4KB
tree.css 4KB
button.css 4KB
toolbar.css 4KB
tabs.css 3KB
date-picker.css 3KB
editor.css 3KB
tabs.css 3KB
resizable.css 3KB
date-picker.css 3KB
date-picker.css 3KB
statusbar.css 3KB
form.css 3KB
tabs.css 3KB
toolbar.css 3KB
toolbar.css 3KB
qtips.css 3KB
form.css 3KB
button.css 3KB
button.css 3KB
panel.css 2KB
panel.css 2KB
slider.css 2KB
panel.css 2KB
window.css 2KB
menu.css 2KB
window.css 2KB
window.css 2KB
core.css 2KB
resizable.css 2KB
resizable.css 2KB
core.css 2KB
resizable.css 2KB
menu.css 2KB
list-view.css 2KB
core.css 2KB
RowEditor.css 2KB
box.css 2KB
box.css 2KB
box.css 2KB
box.css 2KB
menu.css 2KB
Spinner.css 2KB
ColumnNodeUI.css 2KB
layout.css 2KB
layout.css 2KB
layout.css 2KB
pivotgrid.css 2KB
qtips.css 2KB
qtips.css 2KB
qtips.css 2KB
GridFilters.css 2KB
dialog.css 2KB
borders.css 2KB
dd.css 2KB
treegrid.css 1KB
debug.css 1KB
combo.css 1KB
combo.css 1KB
list-view.css 1KB
combo.css 1KB
dialog.css 1KB
dialog.css 1KB
dialog.css 1KB
共 1807 条
- 1
- 2
- 3
- 4
- 5
- 6
- 19
jgsu_edu
- 粉丝: 5
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页