java.lang.ClassCastException: org.apache.shiro.web.servlet.ShiroHttpServletRequest cannot be cast to
2016-02-19 14:48
1026 查看
今天在做上传的时候,遇到一个这亲的问题。如题目。
以为是配置文件这与错了。结果查看了好长时间,没找一以错。程序里也没有问题。
最后,问题出在了jquery validate 验证这里。只好改成在form里提交。
如下:
<form id="importYuanLiaoFileForm" name="importYuanLiaoFileForm" action="${ctx}/xxxxx/getUpLoadFile.do" method="post" enctype ="multipart/form-data" target="hidden_frame">
<div class="ui-widget">
<div id="importYuanLiaoFile_toolbar" class="ui-widget-header ui-state-default">
<button id="importYuanLiaoFileSaveBtn" type="button">确定</button>
<button id="importYuanLiaoFileCloseBtn" type="button">关闭</button>
</div>
<div id="importYuanLiaoFileErrorMsg" class="errorCls"></div>
<fieldset>
<legend>导入</legend>
<table cellspacing="5" cellpadding="5" border="0">
<tr>
<td>添加Excel文件</td>
<td>
<input type="file" id="importFile" name="importFile"/><font color="red">*</font>
</td>
</tr>
</table>
</fieldset>
</div>
</form>
<iframe name='hidden_frame' id="hidden_frame" style="display:none"></iframe>
@RequestMapping("getUpLoadFile")
@SuppressWarnings({"unchecked","rawtypes"})
public void getUpLoadFile(HttpServletRequest request, HttpServletResponse response) throws IOException{
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
String ctxPath=request.getSession().getServletContext().getRealPath("/")+"fileUpload"; //文件上传存储路径
ctxPath += File.separator;
// 创建文件夹
File file = new File(ctxPath);
if (!file.exists()) {
file.mkdirs();
}
String fileName = null;
String newName = null;
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
// 上传文件
MultipartFile mf = entity.getValue();
fileName = mf.getOriginalFilename();//获取原文件名
//获得当前时间的最小精度
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS");
newName = format.format(new Date());
//获得三位随机数
Random random = new Random();
for(int i = 0; i < 3; i++){
newName = newName + random.nextInt(9);
}
File uploadFile = new File(ctxPath + newName+fileName.substring(fileName.lastIndexOf(".")));
try {
FileCopyUtils.copy(mf.getBytes(), uploadFile);
} catch (IOException e){
e.printStackTrace();
}
}
response.setHeader("Content-type", "text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
// response.getWriter().write(newName+fileName.substring(fileName.lastIndexOf(".")));
//处理上传数据
try {
String importFile = ctxPath + newName+fileName.substring(fileName.lastIndexOf("."));
importFile = importFile.replaceAll("\\\\","/");
response.getWriter().write("<script>parent.upLoadFinsh();</script>"); //这里设置是返回时的处理方法。直接在js写function upLoadFinsh(){}就行
} catch (Exception e) {
logger.error("保存失败", e);
}
}
以为是配置文件这与错了。结果查看了好长时间,没找一以错。程序里也没有问题。
最后,问题出在了jquery validate 验证这里。只好改成在form里提交。
如下:
<form id="importYuanLiaoFileForm" name="importYuanLiaoFileForm" action="${ctx}/xxxxx/getUpLoadFile.do" method="post" enctype ="multipart/form-data" target="hidden_frame">
<div class="ui-widget">
<div id="importYuanLiaoFile_toolbar" class="ui-widget-header ui-state-default">
<button id="importYuanLiaoFileSaveBtn" type="button">确定</button>
<button id="importYuanLiaoFileCloseBtn" type="button">关闭</button>
</div>
<div id="importYuanLiaoFileErrorMsg" class="errorCls"></div>
<fieldset>
<legend>导入</legend>
<table cellspacing="5" cellpadding="5" border="0">
<tr>
<td>添加Excel文件</td>
<td>
<input type="file" id="importFile" name="importFile"/><font color="red">*</font>
</td>
</tr>
</table>
</fieldset>
</div>
</form>
<iframe name='hidden_frame' id="hidden_frame" style="display:none"></iframe>
@RequestMapping("getUpLoadFile")
@SuppressWarnings({"unchecked","rawtypes"})
public void getUpLoadFile(HttpServletRequest request, HttpServletResponse response) throws IOException{
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
String ctxPath=request.getSession().getServletContext().getRealPath("/")+"fileUpload"; //文件上传存储路径
ctxPath += File.separator;
// 创建文件夹
File file = new File(ctxPath);
if (!file.exists()) {
file.mkdirs();
}
String fileName = null;
String newName = null;
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
// 上传文件
MultipartFile mf = entity.getValue();
fileName = mf.getOriginalFilename();//获取原文件名
//获得当前时间的最小精度
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS");
newName = format.format(new Date());
//获得三位随机数
Random random = new Random();
for(int i = 0; i < 3; i++){
newName = newName + random.nextInt(9);
}
File uploadFile = new File(ctxPath + newName+fileName.substring(fileName.lastIndexOf(".")));
try {
FileCopyUtils.copy(mf.getBytes(), uploadFile);
} catch (IOException e){
e.printStackTrace();
}
}
response.setHeader("Content-type", "text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
// response.getWriter().write(newName+fileName.substring(fileName.lastIndexOf(".")));
//处理上传数据
try {
String importFile = ctxPath + newName+fileName.substring(fileName.lastIndexOf("."));
importFile = importFile.replaceAll("\\\\","/");
response.getWriter().write("<script>parent.upLoadFinsh();</script>"); //这里设置是返回时的处理方法。直接在js写function upLoadFinsh(){}就行
} catch (Exception e) {
logger.error("保存失败", e);
}
}
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树