使用commons-fileupload-1.2.1.jar等组件实现文件上传
使用的主要jar包:commons-io-1.3.2.jar包;commons-fileupload-1.2.1.jar包;commons-lang-2.3.jar,在使用组件实现文件上传时候要注意前后台的一致性,注意在后台定义File文件对象名要与jsp页面中的file标签name名字一致,前台form标签属性一定要设置为enctype="multipart/form-data",而且传输方式必须是post方式。不然后台不认为提交的是文件类型,而认为是普通表单的提交。
废话不多说看主要实现代码:前台jsp代码:
<form id="file_upload_id" name="file_upload_name" action="${ctx }/fileProcess/uploadTableFile" method="post" enctype="multipart/form-data">
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" class="table_input">
<tr>
<td class="right">选择本地文件:</td><td colspan="5">
<input type="file" size="20" id="file" name="file"/>
<input type="hidden" name="tableid" value="<%=ids %>"/>
<input type="hidden" name="tumid" value="${param.dum}" />
</td></tr>
</table>
<div class="clear_10px"></div>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" class="table_button">
<tr><td align="left" class="btright"><input type="submit" value="上传" class="button_tj" onclick="getInfo()" /></td>
</tr>
</table>
</form>
后台Java代码:
import java.io.File;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.struts2.ServletActionContext;
public class FileProcessAction extends BaseAction {
private FileDatumService filedatumService;
private AttachmentService attachmentService;
private AccountService accountservice;
private SystemService sysService;
private TDatumdetail detail;
private TDatum datum;
private Tablemanage tm;
public Integer id;
private File file;
private String fileContentType;
private String fileFileName;
private String savePath;
private String downloadFileName;
public String uploadTableFile(){
response.setContentType("text/xml;charset=UTF-8");
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
String fileName = "";
try {
if (isMultipart) {
fileName =getFileFileName();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
String attaCode = sdf.format(new Date());
String suffix = FilenameUtils.getExtension(fileName);
String newName = attaCode.concat(".").concat(suffix);
String basepath = request.getRealPath("/");
System.out.println("ddd:"+getSavePath());
// 保存文件
FileUtils.copyFile(getFile(), new File(basepath+getSavePath()+"/"+newName));
// 保存数据库
Attachment atta = new Attachment();
atta.setAttaName(fileName);
atta.setCurrentName(newName);
atta.setUploadTime(new Date());
atta.setUrl("/upload/" + newName);
int id=Integer.valueOf(request.getParameter("tableid"));
Tablemanage tabma=new Tablemanage();
tabma.setTablefile(fileName);
accountservice.tableUpdateSingle(id,tabma);
id=attachmentService.addFileattachment(atta);
session.put("fileid", id);
session.put("uploadFileName", newName);
return SUCCESS;
}
} catch (Exception e) {
e.printStackTrace();
}
return "failure";
}
public AttachmentService getAttachmentService() {
return attachmentService;
}
public void setAttachmentService(AttachmentService attachmentService) {
this.attachmentService = attachmentService;
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public TDatumdetail getDetail() {
return detail;
}
public void setDetail(TDatumdetail detail) {
this.detail = detail;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFileContentType() {
return fileContentType;
}
public void setFileContentType(String fileContentType) {
this.fileContentType = fileContentType;
}
public String getFileFileName() {
return fileFileName;
}
public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}
public String getSavePath() {
return savePath;
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
public void setDownloadFileName(String downloadFileName) {
this.downloadFileName = downloadFileName;
}
public String getDownloadFileName() {
return downloadFileName;
}
public FileDatumService getFiledatumService() {
return filedatumService;
}
public void setFiledatumService(FileDatumService filedatumService) {
this.filedatumService = filedatumService;
}
public AccountService getAccountservice() {
return accountservice;
}
public void setAccountservice(AccountService accountservice) {
this.accountservice = accountservice;
}
public SystemService getSysService() {
return sysService;
}
public void setSysService(SystemService sysService) {
this.sysService = sysService;
}
public TDatum getDatum() {
return datum;
}
public void setDatum(TDatum datum) {
this.datum = datum;
}
}
在truts.xml里面的action中可以配置要上传文件的路径
<action name="uploadTableFile" class="com.sunway.storage.action.FileProcessAction"
method="uploadTableFile">
<param name="savePath">/upload</param>
</action>
使用commons-fileupload-1.2.1.jar等组件实现文件上传的更多相关文章
- 模拟文件上传(二):使用apache fileupload组件进行文件上传
其中涉及到的jar包: jsp显示层: <%@ page language="java" import="java.util.*" pageEncodin ...
- MVC文件上传-使用jQuery.FileUpload和Backload组件实现文件上传
本篇使用客户端jQuery-File-Upload插件和服务端Badkload组件实现多文件异步上传.MVC文件上传相关兄弟篇: 处理文件上传的服务端组件Backload 用于处理文件上传的服务端组件 ...
- Java使用comms-net jar包完成ftp文件上传进度的检测功能
本文章只讲述大致的思路与本次功能对应的一些开发环境,具体实现请结合自己的开发情况,仅供参考,如果有不对的地方,欢迎大家指出! 准备环境:JDK1.7 OR 1.8.eclipse.ftp服务器(可自行 ...
- Commons组件实现文件上传与下载
一.文件上传 所需jar包 首先是commons-fileupload.jar包 其次是commons-IO.jar包 前者的使用依赖后者,两者缺一不可 实现 前台要求 在前台提交的form表单请求方 ...
- 【java】[文件上传jar包]commons-fileUpload组件解决文件上传(文件名)乱码问题
response.setContentType("text/html; charset=UTF-8"); Boolean isMultipart = ServletFileUpl ...
- Apache Commons FileUpload 实现文件上传
Commons FileUpload简介 Apache Commons是一个专注于可重用Java组件开发的 Apache 项目.Apache Commons项目由三个部分组成: 1.Commons P ...
- .JavaWeb文件上传和FileUpload组件使用
.JavaWeb文件上传 1.自定义上传 文件上传时的表单设计要符合文件提交的方式: 1.提交方式:post 2.表单中有文件上传的表单项:<input type="file" ...
- Java中的文件上传2(Commons FileUpload:commons-fileupload.jar)
相比上一篇使用Servlet原始去实现的文件上传(http://www.cnblogs.com/EasonJim/p/6554669.html),使用组件去实现相对来说功能更多,省去了很多需要配置和处 ...
- Apache Commons fileUpload实现文件上传之一
需要两个jar包: commons-fileupload.jar Commons IO的jar包(本文使用commons-io-2.4.jar) 利用Servlet来实现文件上传. package ...
随机推荐
- MySql的存储引擎介绍
下面主要介绍InnoDB.MyISAM和MEMEORY三种存储引擎. InnoDB存储引擎 InnoDB遵循CNU通用公开许可(GPL)发行.InnoDB已经被一些重量级互联网公司所采用,如雅虎.Sl ...
- 正排索引(forward index)与倒排索引(inverted index)
正常的索引一般是指关系型数据库里的索引. 把不同的数据存放到不同的字段中.如果要实现baidu或google那种搜索,就需要与一条记录的多个字段进行比对,需要 全表扫描,如果数据量比较大的话,性能就很 ...
- angularjs之UI Grid 的刷新 本地数据源及HTTP数据源
关键代码: 如果数据源是本地数据$("#hidJsonData").val("[]"); var myJsonData = []; if ($(&quo ...
- (原创).Net将EF运用于Oralce一 准备工作
网上有很多EF运用于Oracle的博文,但是找了半天发现大多数博文大都语焉不详,于是决定自己折腾. 首先我的开发工具为vs2010,那么最适用于VS2010的EF版本为多少呢?答案是EF5.我在Sta ...
- Javascript获取页面表格中的数据
var main=mygrid.gettable("11"); //表示获取非固定列的表格 var main1=mygrid.gettable("01");// ...
- SQL2008使用with求余额表,流水账方式
1.先准备数据,将要求余额的表数据插入临时表 SELECT Serial, VoucherNum, SubjectNum, SubjectName, Direction, Amount INTO #T ...
- css3动画基础详解(@keyframes和animation)
我们经常会看到CSS3能制作出很炫酷的动画效果,但是自己却只能做一些简单的.原因是对CSS3动画只知其一,不知其二.最近正好有做动画的项目,于是花时间将css3动画做了一个探究之旅,记录在册. 动画是 ...
- Python入门-生成器和生成器表达式
昨天我们说了迭代器,那么和今天说的生成器是什么关系呢? 一.生成器 什么是生成器?说白了生成器的本质就是迭代器. 在Python中中有三种方式来获取生成器. 1.通过生成器函数 2.通过各种推导式来实 ...
- 云栖神侠传—阿里云数据库专家德歌告诉你PostgreSQL的那些事
什么是云栖神侠传: 云栖社区(http://yq.aliyun.com/?utm_source=yqdg),是阿里云面向开发者群体的开放型社区.在云栖社区中,活跃着许多阿里技术大牛,他们在自己的技术领 ...
- 用两个栈实现队列(C++ 和 Python 实现)
(说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 a ...