- 浏览: 1525169 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (516)
- Java (49)
- Java/Struts 2.0 (25)
- Java/Spring、Spring MVC (11)
- Java/Quartz (3)
- Java/Lucene (6)
- Java/Hibernate (19)
- Java/openJPA (7)
- Java/DWR (7)
- Java/Security、Spring Security/OAuth2 (6)
- Java/Threading (9)
- Java/XML (22)
- java/design pattern (4)
- Android (2)
- JavaScript (46)
- jquery (3)
- DB/MySQL (23)
- DB/Oracle (16)
- PHP (25)
- CSS (20)
- Linux (38)
- C/C++、DLL、Makefile、VC++ (31)
- 正则 (9)
- Eclipse (4)
- 安全、网络等概念 (25)
- 集群 (7)
- 网页 (5)
- 视频\音频 (1)
- HTML (6)
- 计算机数学/算法 (3)
- Virtualbox (1)
- LDAP (2)
- 数据挖掘 (6)
- 工具破解 (1)
- 其他 (13)
- Mail (1)
- 药材 (3)
- 游戏 (2)
- hadoop (13)
- 压力测试 (3)
- 设计模式 (3)
- java/Swing (2)
- 缓存/Memcache (0)
- 缓存/Redis (1)
- OSGI (2)
- OSGI/Gemini (0)
- 文档写作 (0)
- java/Servlet (3)
- MQ/RabbitMQ (2)
- MQ/RocketMQ (0)
- MQ/Kafka (1)
- maven (0)
- SYS/linux (1)
- cache/redis (1)
- DB/Mongodb (2)
- nginx (1)
- postman (1)
- 操作系统/ubuntu (1)
- golang (1)
- dubbo (1)
- 技术管理岗位 (0)
- mybatis-plus (0)
最新评论
-
pgx89112:
大神,请赐我一份这个示例的项目代码吧,万分感谢,1530259 ...
spring的rabbitmq配置 -
string2020:
不使用增强器 怎么弄?
OpenJPA的增强器 -
孟江波:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!4 ...
spring的rabbitmq配置 -
eachgray:
...
spring-data-redis配置事务 -
qljoeli:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!1 ...
spring的rabbitmq配置
在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。
jxl.jar可以到http://sourceforge.net/project/showfiles.php?group_id=79926
下载。
使用如下:
搭建环境
将下载后的文件解包,得到jxl.jar,然后和webwork运行所需要的所有包一并放入classpath,安装就完成了。
jsp代码(uploadFile.jsp):
jsp页面其实很简单,就一个input框放在一个form表单里,请注意着色部分:
form标签务必脚上加上enctype="multipart/form-data,
<input type=file name=fileImages />中的file控件name名称需要和
FileUpload.java中的着色部分保持一致,
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="ww" uri="/webwork" %>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Show case</title>
</head>
<body>
<form action="<%=path %>/upload/doUpload.action" method="POST" enctype="multipart/form-data">
upload: <input type="file" name="fileImages">
<input type="submit" name="upload" value="upload">
<form>
</body>
</html>
java代码(FileUpload.java ):
package com;
import java.io.*;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JFileChooser;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import org.apache.log4j.Logger;
import com.opensymphony.webwork.ServletActionContext;
public class FileUpload extends BaseAction1{
/**
*
*/
private Logger logger = Logger.getLogger(FileUpload.class);
private static final long serialVersionUID = 5943699833329252614L;
// 对应<input type=file name=fileImages />中的file控件name名称
private File[] fileImages;
private File filepath;
// 获取 文件名称 fileImages file 控件上传文件的文件名称;
private String[] fileImagesFileName;
FileInputStream fileIn;
public String path;
public String stringexcle;
int filesize = 0;
public FileInputStream getFileIn() {
return fileIn;
}
public void setFileIn(FileInputStream fileIn) {
this.fileIn = fileIn;
}
public int getFilesize() {
return filesize;
}
public void setFilesize(int filesize) {
this.filesize = filesize;
}
public String doUploadAction() {
File[] newFileImages = FileUtil.renameToFiles(fileImagesFileName,
fileImages);
if (newFileImages != null && newFileImages.length > 0) {
for (File file : newFileImages) {
try {
if (!FileUtil.verifyFile(file, new String[] { "jpg", "gif",
"jpeg", "png" ,"txt","xls"})) {
this.addFieldError("errorimage",
"Error:Invalid File Type");
return "create";
}
} catch (Exception e) {
e.printStackTrace();
}
}
for (File fileImage : newFileImages) {
try {
String imageName = fileImage.getName();
fileIn = new FileInputStream(fileImage);
filesize = fileIn.available();
logger.info("获得文件名称: " + imageName);
logger.info("获得文件大小:" + filesize);
path=getProductFilePath();
FileUtil.saveFile(fileImage, imageName,
getProductFilePath());
stringexcle=readExcel(fileImage);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return SUCCESS;
}
/**读取Excel文件的内容
* @param file 待读取的文件
* @return
*/
public static String readExcel(File file){
StringBuffer sb = new StringBuffer();
Workbook wb = null;
try {
//构造Workbook(工作薄)对象
wb=Workbook.getWorkbook(file);
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if(wb==null)
return null;
//获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
Sheet[] sheet = wb.getSheets();
if(sheet!=null&&sheet.length>0){
//对每个工作表进行循环
for(int i=0;i<sheet.length;i++){
//得到当前工作表的行数
int rowNum = sheet[i].getRows();
for(int j=0;j<rowNum;j++){
//得到当前行的所有单元格
Cell[] cells = sheet[i].getRow(j);
if(cells.length>0){
//对每个单元格进行循环
for(int k=0;k<cells.length;k++){
//读取当前单元格的值
String cellValue = cells[k].getContents();
sb.append(cellValue+"\t");
}
}
sb.append("\r\n");
}
sb.append("\r\n");
}
}
//最后关闭资源,释放内存
wb.close();
return sb.toString();
}
//得到文件路径
public File getSelectedFile()
{
JFileChooser jfc = new JFileChooser();
int returnVal = jfc.showSaveDialog(null);
//得出文件路径
if(returnVal == JFileChooser.APPROVE_OPTION )
{
System.out.println("The path of the files:"+jfc.getSelectedFile().getName());
}
return jfc.getSelectedFile();
}
public void searchAction(){
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset=utf-8");
PrintWriter out;
String fileImages = ServletActionContext.getRequest().getParameter("fileImages");//从JSP页面拿值
// String[] fileImages=null;
System.out.println(fileImages);
try {
out = ServletActionContext.getResponse().getWriter();
// for(int i=0;i<fileImages.length;i++){
out.println("<input type='file' value='"+fileImages+"' name='uploadFiles'>");
// }
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public File[] getFileImages() {
return fileImages;
}
public void setFileImages(File[] fileImages) {
this.fileImages = fileImages;
}
public String[] getFileImagesFileName() {
return fileImagesFileName;
}
public void setFileImagesFileName(String[] fileImagesFileName) {
this.fileImagesFileName = fileImagesFileName;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public File getFilepath() {
return filepath;
}
public void setFilepath(File filepath) {
this.filepath = filepath;
}
public String getStringexcle() {
return stringexcle;
}
public void setStringexcle(String stringexcle) {
this.stringexcle = stringexcle;
}
}
FileUtil.java :
package com;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileUtil {
// 重命名文件;
public static File[] renameToFiles(String[] fileNames, File[] files) {
File[] retFiles = null;
if (fileNames != null && fileNames.length > 0) {
retFiles = new File[fileNames.length];
for (int i = 0, n = fileNames.length; i < n; i++) {
File dist = new File(fileNames[i]);
files[i].renameTo(dist);
retFiles[i] = dist;
}
}
return retFiles;
}
// save文件
public static long saveFile(File file, String fileName, String filePath)
throws Exception {
if (file == null) {
return 0;
}
File filepath = new File(filePath);
if (!filepath.isDirectory())
filepath.mkdirs();
File filedesc = new File(filepath, fileName);
return copyFile(file, filedesc);
}
// copy文件
public static long copyFile(File fromFile, File toFile) {
long len = 0;
InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream(fromFile);
out = new FileOutputStream(toFile);
byte[] t = new byte[1024];
int ii = 0;
while ((ii = in.read(t)) > 0) {
out.write(t, 0, ii);
len += ii;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (out != null) {
try {
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return len;
}
// 验证文件正确;
public static boolean verifyFile(File file, String[] exts) throws Exception {
boolean flag = false;
if (file != null) {
String ext = getExtension(file.getName());
if (ext == null) {
return false;
}
if (exts != null && exts.length > 0) {
if (exts[0].equals("*.*"))
return true;
for (int i = 0; i < exts.length; i++) {
if (ext.equalsIgnoreCase(exts[i])) {
flag = true;
break;
}
}
}
}
return flag;
}
// 取得文件扩展;
public static String getExtension(String fileName) {
int newEnd = fileName.length();
int i = fileName.lastIndexOf('.', newEnd);
if (i != -1) {
return fileName.substring(i + 1, newEnd);
} else {
return null;
}
}
}
BaseAction1.java :
package com;
import java.io.File;
import com.opensymphony.xwork.ActionSupport;
public class BaseAction1 extends ActionSupport {
private static final long serialVersionUID = -2796680436059696842L;
private static final String FILE_PATH = "d:/upload/"; // 文件realpath;
public String getProductFilePath() {
File filesPath = new File(FILE_PATH);
if (!filesPath.exists()) { // (canRead()
filesPath.mkdirs(); // mkdirs()
}
return FILE_PATH;
}
}
webwork.properties
# 保存的目录缺省使用 javax.servlet.context.tempdir
webwork.multipart.saveDir= javax.servlet.context.tempdir
webwork.multipart.maxSize=102400000
# 文件上传设置
# 用来处理HTTP POST请求,编码使用MIME-type multipart/form-data方式的
webwork.multipart.parser=jakarta
# 指定locale,编码
webwork.i18n.encoding=UTF-8
webwork.custom.i18n.resources=messages,acl,definition
# 开发模式设定
webwork.devMode = false
# 配置自动更新设定
webwork.configuration.xml.reload=true
# 国际化资源设定
webwork.i18n.reload=true
xwork.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
<xwork>
<include file="webwork-default.xml" />
<!-- 引用多个 xwork_*.xml -->
<include file="xwork_upload.xml" />
</xwork>
xwork_upload.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
<xwork>
<package name="upload" extends="webwork-default" namespace="/upload">
<interceptors>
<interceptor name="upload"
class="com.opensymphony.webwork.interceptor.FileUploadInterceptor">
<param name="maximumSize">10000000</param>
</interceptor>
<interceptor-stack name="uploadStack">
<interceptor-ref name="upload" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="WSStack" />
<action name="doUpload"
class="com.FileUpload" method="doUploadAction">
<interceptor-ref name="params" /><!-- 将请求中的参数设置到Action中去 -->
<interceptor-ref name="basicStack" />
<interceptor-ref name="uploadStack" />
<result name="success">
<param name="location">/success.jsp</param>
</result>
</action>
</package>
</xwork>
success.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="/webwork" prefix="ww" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Showcase</title>
</head>
<body>
<h1>Fileupload sample</h1>
<ul>
<li>ContentType: <ww:property value="filesize" /></li>
<li>FileName: <ww:property value="path" /></li>
<li>File: <ww:property value="filepath" /></li>
</ul>
</body>
</html>
相关推荐
### WebWork 上传文件知识点详解 #### 一、WebWork框架简介 WebWork是一个基于Java的开源Web应用程序框架,它支持MVC(Model-View-Controller)架构模式,能够简化Web应用开发流程。WebWork提供了丰富的特性,如...
在Web开发中,上传文件是一项常见的功能。在本例中,我们关注的是使用WebWork框架在Java环境中实现文件上传。WebWork是一个轻量级的MVC(Model-View-Controller)框架,它提供了处理HTTP请求和响应的强大工具,包括...
此外,"webwork上传文件.txt"可能是一个文本文件,其中包含了WebWork文件上传的源代码示例。通常,这样的文件会包含Action类的代码,展示如何处理上传的文件,包括获取`Part`对象,验证文件,以及将文件保存到服务器...
在本教程中,我们将探讨如何利用WebWork实现文件上传功能,特别是针对Excel文件的处理。 首先,理解WebWork的MVC模式至关重要。在WebWork框架中,控制器负责接收用户请求,调用业务逻辑,并将结果传递给视图进行...
避免文件名冲突、防止恶意文件上传(如脚本或病毒),以及对上传文件的访问权限控制都是需要考虑的因素。 在这个范例中,"uploadfile"可能是用来演示如何处理上传的文件的代码或示例文件。可能包含一个ActionForm类...
webwork上传文件pdf文件说明文档
其中,`UploadFile`是一个自定义的类,用于封装上传文件的信息,如文件名、原始文件名、文件大小等。 3. **文件上传组件** WebWork并没有内置的文件上传处理组件,因此我们需要借助第三方库,如Apache Commons ...
例如,你需要验证上传文件的大小和类型,防止恶意文件或过大文件导致服务器问题。同时,下载链接应该有限期,以避免未授权的访问。 6. **错误处理**:在上传或下载过程中可能会遇到各种错误,如文件过大、网络中断...
本篇文章将围绕"webwork 文件上传下载"这个主题,深入探讨WebWork框架下如何实现文件的上传和下载。 首先,让我们了解文件上传的基本概念。在Web应用中,文件上传通常涉及HTML表单、HTTP协议和服务器端处理。在...
接着,创建一个`FileUploadAction`类,该类继承自WebWork的Action基类,并包含一个用于存储上传文件的临时字段。iBatis的SqlMapClient可以用来处理文件存储到数据库的操作: ```java public class FileUploadAction...
"fileupload+dwr2+webwork2实现带进度条上传文件"这个主题涉及到三个关键技术和组件:FileUpload、Direct Web Remoting (DWR) 和 WebWork2,它们协同工作以提供一个带有进度条的高效、用户友好的文件上传体验。...
总之,使用WebWork上传Excel并导入MySQL数据库是一项常见的任务,涉及到前端交互、文件上传处理、Excel解析和数据库操作等多个技术领域。理解并熟练掌握这些知识点对于开发企业级应用至关重要。在实践中,不断优化和...
在WebWork的动作类中,我们可以使用`org.apache.struts.upload.FormFile`或WebWork自己的`com.opensymphony.webwork上传.FileUploadActionSupport`来接收和处理上传的文件。以下是一个简单的WebWork2.2.7动作类示例...
注意`enctype="multipart/form-data"`,这是上传文件时必须的属性。 2. **后台Action**:在对应的Action类中,我们需要创建三个属性:`uploadFiles`用于接收文件对象,`uploadFilesFileName`用于存储文件名,`...
本文主要从三个方面给大家介绍webwork文件上传下载知识,包括以下三个方面: 1. 包装 Request 请求 2. 获取文件上传的解析类 3. 项目实战配置和使用 Web上传和下载应该是很普遍的一个需求,无论是小型网站还是大...
在WebWork中实现文件上传和下载是常见的功能需求,下面将详细介绍这两个过程以及可能遇到的问题。 **一、WebWork文件上传** 1. **前端页面** 在HTML页面中,你需要创建一个`<input type="file">`标签让用户选择要...
注意`enctype="multipart/form-data"`,这是上传文件时必需的属性。 2. **配置WebWork** 在WebWork的配置文件(如`struts.xml`或`xwork.xml`)中,我们需要定义一个Action,用于处理上传请求。比如: ```xml ...
2. **解压文件**:解压后的目录包含必要的文件和目录,例如`webwork-2.x.jar`(主库文件)、`webwork-example.war`(示例应用)、`docs`(文档)、`lib`(依赖库)等。 3. **部署至Web容器**:将下载的WebWork部署到...
在这个教程中,我们将探讨如何在WebWork 2.2.7的Action中利用Apache Commons FileUpload库来实现文件上传功能,并处理文件流。Apache Commons FileUpload是一个强大的库,专门用于处理HTTP请求中的多部分/表单数据,...