使用的主要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等组件实现文件上传的更多相关文章

  1. 模拟文件上传(二):使用apache fileupload组件进行文件上传

    其中涉及到的jar包: jsp显示层: <%@ page language="java" import="java.util.*" pageEncodin ...

  2. MVC文件上传-使用jQuery.FileUpload和Backload组件实现文件上传

    本篇使用客户端jQuery-File-Upload插件和服务端Badkload组件实现多文件异步上传.MVC文件上传相关兄弟篇: 处理文件上传的服务端组件Backload 用于处理文件上传的服务端组件 ...

  3. Java使用comms-net jar包完成ftp文件上传进度的检测功能

    本文章只讲述大致的思路与本次功能对应的一些开发环境,具体实现请结合自己的开发情况,仅供参考,如果有不对的地方,欢迎大家指出! 准备环境:JDK1.7 OR 1.8.eclipse.ftp服务器(可自行 ...

  4. Commons组件实现文件上传与下载

    一.文件上传 所需jar包 首先是commons-fileupload.jar包 其次是commons-IO.jar包 前者的使用依赖后者,两者缺一不可 实现 前台要求 在前台提交的form表单请求方 ...

  5. 【java】[文件上传jar包]commons-fileUpload组件解决文件上传(文件名)乱码问题

    response.setContentType("text/html; charset=UTF-8");  Boolean isMultipart = ServletFileUpl ...

  6. Apache Commons FileUpload 实现文件上传

    Commons FileUpload简介 Apache Commons是一个专注于可重用Java组件开发的 Apache 项目.Apache Commons项目由三个部分组成: 1.Commons P ...

  7. .JavaWeb文件上传和FileUpload组件使用

    .JavaWeb文件上传 1.自定义上传 文件上传时的表单设计要符合文件提交的方式: 1.提交方式:post 2.表单中有文件上传的表单项:<input type="file" ...

  8. Java中的文件上传2(Commons FileUpload:commons-fileupload.jar)

    相比上一篇使用Servlet原始去实现的文件上传(http://www.cnblogs.com/EasonJim/p/6554669.html),使用组件去实现相对来说功能更多,省去了很多需要配置和处 ...

  9. Apache Commons fileUpload实现文件上传之一

      需要两个jar包: commons-fileupload.jar Commons IO的jar包(本文使用commons-io-2.4.jar) 利用Servlet来实现文件上传. package ...

随机推荐

  1. 九度oj 题目1009:二叉搜索树

    题目1009:二叉搜索树 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5733 解决:2538 题目描述: 判断两序列是否为同一二叉搜索树序列 输入: 开始一个数n,(1<=n&l ...

  2. 项链(burnside)

    Description 有一个长度为 \(n\) 的项链,首尾相接形成环,现在你要给每一个位置一个颜色 \([1,m]\), 求所有不同的项链个数(可以通过旋转变成一样的称为相同) Solution ...

  3. solr不是标准的java project解决方案

    官方默认提供的源码包并不是一个标准的Eclipse Java - Project,需要使用ivy进行构建,通过ivy的构建可以将下载下来的源码包转换成一个标准的java Project,然后我们就能把 ...

  4. PHP代码语法验证插件:SublimeLinter

    1.调出控制台 Ctrl+Shift+P,输入 install package,Enter

  5. 8、导航:Nav

    1.导航视图   angular2 中的是视图是显示在<router-outlet></router-outlet>里的同时他要依赖于 directives:[ ROUTER_ ...

  6. XAML语法及标记扩展、附加属性、特定的字符和空白

    1.对象元素语法 使用开闭标签将对象定义一个XML元素,这种语法与其他标记语言如HTML的元素语法非常相似,在以左右尖括号保卫要设置的类或结构的类型名称.对象元素可以声明0个或多个属性,以一个或多个空 ...

  7. ASP.NET MVC中,前台DropDownList传值给后台。

    List<SelectListItem> ZH = new List<SelectListItem>(); ZH.Add(new SelectListItem { Text = ...

  8. 简单的数据库连接池实例(java语言)

    1.概述 频繁的创建和销毁数据库连接消耗非常多的系统资源,创建一个池子, 管理一定数量的连接,用的时候去池中取,用完了放回池中,这时比较通用的做法. 2.关键字 LinkedList  synchro ...

  9. redis 安装与php扩展

    php-redis扩展下载地址:https://pecl.php.net/package/redis/2.2.7/windows 注意:   php_igbinary-5.5-vc11-ts-x86- ...

  10. CentOS 7运维管理笔记(12)----PHP页面失去焦点后变成空白的解决方法

    昨天搭建好了LAMP服务器,可以正常看到PHP页面了.后来发现每当把鼠标从浏览器中移开而点击其他地方时,PHP页面就变成一片空白.即PHP页面失去焦点后就变空白,不知为何. 今天网上搜索解决方案,终于 ...