fileupload 上传execl文件的一些操作
package com.dadi.oa.web.action;
import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.servlet.ServletRequestContext;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.dadi.oa.pojo.Users;
import com.dadi.oa.service.ReadExeclDataService;
import com.dadi.oa.system.ConstantsUtil;
import com.dadi.oa.util.RequestUtil;
import com.dadi.oa.util.StringUtil;
import com.dadi.oa.util.UploadUtil;
/**
* 读取execl action基类,处理一些通用操作
* @author ao.ouyang
*
*/
public class OABaseReadExeclDataAction extends OABaseAction {
private Log logger = LogFactory.getLog(this.getClass());
protected ReadExeclDataService readExeclDataService;
//默认读取execl的临时目录
protected String tempReadExeclDir;
//封装了form表单属性的集合
protected Map<String,String> formFieldItems;
protected File readExeclFile;
private File tempDirectoryFile;
public void setReadExeclDataService(ReadExeclDataService readExeclDataService) {
this.readExeclDataService = readExeclDataService;
}
public void setTempReadExeclDir(String tempReadExeclDir) {
this.tempReadExeclDir = tempReadExeclDir;
}
/**
* 初始化临时文件目录
*/
public void initDir(){
formFieldItems = new HashMap<String, String>();
String nativeWebAppFoldPath =((WebApplicationContext)ConstantsUtil.beanFactory).getServletContext().getRealPath("/");
tempDirectoryFile = new File(nativeWebAppFoldPath + tempReadExeclDir);
// 文件夹不存在就自动创建
if (!tempDirectoryFile.isDirectory()) {
tempDirectoryFile.mkdirs();
}
}
@Override
protected ActionForward dispatchMethod(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response, String name) throws Exception {
// TODO Auto-generated method stub
String resultStr=processFileUpload(request);
if(!resultStr.equalsIgnoreCase("success")){
request.setAttribute("info",resultStr);
request.setAttribute("closepage", "yes");
return mapping.findForward("oapromptinfo");
}
return super.dispatchMethod(mapping, form, request, response, name);
}
/**
* 处理请求文件
* @param request
* @return
*/
public String processFileUpload(HttpServletRequest request) throws Exception {
String resultStr = "success";
try {
if(!FileUpload.isMultipartContent(new ServletRequestContext(request))){
throw new Exception("操作异常,请重新再试!!!");
}
ServletFileUpload fileUpload = UploadUtil.getFileUploadObject(10);
List fileItems = null;
FileItem readItem = null;
fileItems = fileUpload.parseRequest(request);
for (Iterator it = fileItems.iterator(); it.hasNext();) {
FileItem item = (FileItem) it.next();
if (!item.isFormField()) {
readItem = item;
}else{
formFieldItems.put(item.getFieldName(),item.getString("UTF-8"));
}
}
//校验文件
checkExecl(readItem);
try {
readExeclFile = new File(tempDirectoryFile.getAbsolutePath(), readItem.getName().substring(readItem.getName().lastIndexOf("\\")+1));
readItem.write(readExeclFile);
readItem.delete();
} catch (Exception e) {
e.printStackTrace();
throw new Exception("文件转换异常,请检查!!!");
}
} catch (Exception e) {
e.printStackTrace();
resultStr=e.getMessage();
logger.info("================ERROR:OABaseReadExeclDataAction.executeSub()"+e.getMessage());
}
return resultStr;
}
/**
* 校验文件
* @throws Exception
*/
private void checkExecl(FileItem readItem) throws Exception{
logger.info("==========OABaseReadExeclDataAction.checkExecl() begin===========");
String inputFileName = readItem.getName();
long inputFileSize = readItem.getSize();
if(StringUtil.isEmptyString(inputFileName)){
throw new Exception("系统找不到文件,请确定文件路径!!!");
}
if(!(inputFileSize > 0)){
throw new Exception("系统找不到文件或文件没有内容!!!");
}
String inputFileExtension = FilenameUtils.getExtension(inputFileName).toLowerCase();
if("".equalsIgnoreCase(inputFileExtension)){
throw new Exception("文件无后缀名,请选择正确的文件上传!!!");
}
if("xls,xlsx".indexOf(inputFileExtension)<0){
throw new Exception("请上传execl文档格式,格式如:xls,xlxs;请选择正确的文件上传!!!");
}
logger.info("===========OABaseReadExeclDataAction.checkExecl() end===========");
}
}
fileupload 上传execl文件的一些操作的更多相关文章
- asp.net fileupload上传大文件时提示404.13错误
IIS 7 默认文件上传大小时30M 要突破这个限制,需要做如下操作: 1. 修改IIS的applicationhost.config 打开 %windir%\system32\inetsrv ...
- 解决FileUpload上传大文件报错
<system.webServer> <security> <requestFiltering> <requestLimits maxAllowedConte ...
- 解决Cornerstone不能上传.a文件的问题 Cornerstone不上传*.xcuserstate,*.xcbkptlist文件
在使用CornerStone的时候经常会出现.a文件无法上传的问题,导致从svn checkout到本地的时候编译报错 这里可以通过配置CornerStone来达到上传.a文件的效果 操作步骤: 打开 ...
- centos/redhat命令行上传下载文件
前言:客户端上没有安装xftp,winscp等等软件,无法将服务器上需要的文件下载到本地去解析,无法将本地的安装包上传到服务器上去,这个时候命令行就可以带你翱翔一波 配置如下: 服务器上: 1.安装需 ...
- FileUpload 上传文件,并实现c#使用Renci.SshNet.dll实现SFTP文件传输
fileupload上传文件和jquery的uplodify控件使用方法类似,对服务器控件不是很熟悉,记录一下. 主要是记录新接触的sftp文件上传.服务器环境下使用freesshd搭建好环境后,wi ...
- Webform之FileUpload(上传按钮控件)简单介绍及下载、上传文件时图片预览
1.FileUpload上传控件:(原文:http://www.cnblogs.com/hide0511/archive/2006/09/24/513201.html) FileUpload 控件显示 ...
- PHP文件上传和文件操作案例
<?php /* *文件配置变量$dirname是目录名称 */ session_start(); $dirname = 'upload'; $fileClass = new fileClass ...
- .NET FileUpLoad上传文件
一.上传扫描件到服务器,自定义创建文件夹(如果存在该文件夹,则无需创建),并判断格式以及文件大小进行保存: 首先创建一个保存按钮事件: protected void btnSave_Click(obj ...
- SFTP上传下载文件、文件夹常用操作
SFTP上传下载文件.文件夹常用操作 1.查看上传下载目录lpwd 2.改变上传和下载的目录(例如D盘):lcd d:/ 3.查看当前路径pwd 4.下载文件(例如我要将服务器上tomcat的日志文 ...
随机推荐
- Web服务器性能压力测试工具http_load、webbench、ab、Siege使用教程
Web服务器性能压力测试工具http_load.webbench.ab.Siege使用教程 作者: feng 日期: 2012/07/25 发表评论 (0) 查看评论 一.http_load 程序 ...
- C#线程访问winform窗体控件
参考地址:http://www.cnblogs.com/jason-liu-blogs/archive/2012/09/08/2677008.html 添加: public Form() { Init ...
- web.xml文件头出错
原先将web.xml文件头设置为如下格式 <?xml version="1.0" encoding="UTF-8"?><web-app ver ...
- PHP-Ajax跨域解决方案
1.先了解下Ajax跨域问题: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "ht ...
- PO_PO接受入库时的接受方式详解(概念)
2014-06-03 Created By BaoXinjian
- slub分配器
Linux的物理内存管理采用了以页为单位的buddy system(伙伴系统),但是很多情况下,内核仅仅需要一个较小的对象空间,而且这些小块的空间对于不同对象又是变化的.不可预测的,所以需要一种类似用 ...
- 推荐系统学习07-Waffles
介绍 Waffles 英文原意是蜂蜜甜饼,在这里却指代一个很强大的机器学习的开源工具包. Waffles里包括的算法特别多.涉及机器学习的方方面面,推荐系统位于当中的Waffles_recommend ...
- -174dBm的含义
常温下(290K)一个热电阻会产生少量的噪声能量P=kTB k = 玻尔兹曼常数(1.38 x 10–23 J/K)T = 温度(K)B = 噪声带宽(Hz) 由于总噪声功率是测量带宽的函数,数值通常 ...
- Google大脑科学家贾杨清(Caffe缔造者)-微信讲座
Google大脑科学家贾杨清(Caffe缔造者)-微信讲座 机器学习Caffe 贾扬清 caffe 一.讲座正文: 大家好!我是贾扬清178,目前在Google Brain69,今天有幸受雷鸣师兄 ...
- 大数问题:求n的阶乘
题目:求100! 这看起来是一个非常简答的问题,递归解之毫无压力 int func(int n){ if(n <= 1) return 1; else return n*func(n-1); } ...