Struts2文件上传
2016-12-02 18:30
507 查看
Struts2文件上传
@(Struts2)[upload,文件上传]Struts2文件上传
文件上传要素
Struts2实现文件上传
Struts上传工具类
使用方式
显示页面
配置上传文件限制
文件上传要素
表单提交的方式必须是POST表单中必须有表单元素:
<input type="file" name="">
表单的
enctype属性必须是
multipart/form-data
Struts2实现文件上传
案例:<input type="file" name="upload"/>
- 字符串类型代表文件名称
- 表单中上传项属性名+FileName
-
private String uploadFileName;
- 字符串类型代表文件类型
- 表单中上传项属性名+ContentType
-
private String uploadContentType;
- 文件类型代表上传文件
- 表单中上传项属性名
-
private File upload;
PS:注意,要提供相应的set方法。
Struts上传工具类
package com.pc.crm.utils; import java.util.UUID; /** * Struts2上传工具类 * * @author Switch * @data 2016年11月30日 * @version V1.0 */ public class UploadUtils { /** * 获取唯一的文件名 * * @param fileName * @return */ public static String getUUIDFileName(String fileName) { int extindx = fileName.lastIndexOf("."); String extention = fileName.substring(extindx); return UUID.randomUUID().toString().replace("-", "") + extention; } /** * 文件分离算法 * * @param uuidFileName * @return */ public static String getDir(String uuidFileName) { // 获取唯一字符串的hashCode int code1 = uuidFileName.hashCode(); // 获取一级目录 int d1 = code1 & 0xf; // 右移4位 int code2 = code1 >>> 4; // 获取耳机目录 int d2 = code2 & 0xf; return "/" + d1 + "/" + d2; } }
使用方式
public String add() throws IOException { if(upload != null) { // 设置目录,这里使用文件系统 String rootDir = "G://uploads"; // 将获取到的文件名处理成唯一文件名 String uuidFileName = UploadUtils.getUUIDFileName(uploadFileName); // 根据唯一文件名获取二级子目录 String childDir = UploadUtils.getDir(uuidFileName); File dir = new File(rootDir + childDir); if(!dir.exists()) { // 创建目录 dir.mkdirs(); } String realPath = rootDir + childDir + "/" + uuidFileName; // 创建文件 File file = new File(realPath); // 文件上传 FileUtils.copyFile(upload, file); // 设置文件上传路径 customer.setCustImage(realPath); } // 保存客户 customerService.save(customer); // 重定向到客户列表Action return "listAction"; }
显示页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html> <html> <head> <TITLE>添加客户</TITLE> <meta charset="UTF-8"> </HEAD> <BODY> <%-- 字段错误回显 --%> <s:fielderror/> <s:form id="form1" name="form1" action="customer_add" namespace="/customer" method="post" enctype="multipart/form-data"> <TR> <td>资质图片 :</td> <td colspan="3"> <input type="file" name="upload"/> </td> </TR> <tr> <td rowspan=2> <INPUT class=button id=sButton2 type=submit value=" 保存 "> </td> </tr> </s:form> </BODY> </HTML>
配置上传文件限制
配置常量,相关属性可以在default.properties文件里找到
<!-- 表单最大提交文件总大小,可以是多个文件 --> <constant name="struts.multipart.maxSize" value="20971520"/>
配置拦截器,相关属性可以在
struts-default.xml文件里找到
<interceptor-ref name="defaultStack"> <!-- 单个文件最大上传限制为2MB --> <param name="fileUpload.maximumSize">2097152</param> <!-- 允许的类型 --> <param name="fileUpload.allowedExtensions">.jpg</param> </interceptor-ref>
相关文章推荐
- 在线用表单建立文件夹
- Jquery 表单取值赋值的一些基本操作
- upload上传单张图片
- Vue.JS入门教程之处理表单
- ASP实现文件上传的方法
- javascript 表单的友好用户体现
- js 提交和设置表单的值
- jQuery多文件异步上传带进度条实例代码
- php轻松实现文件上传功能
- 全面解析node 表单的图片上传
- PHP文件上传问题汇总(文件大小检测、大文件上传处理)
- 攻克CakePHP系列二 表单数据显示
- .net文件上传时实现通过文件头确认文件类型的方法
- ASP.NET实现大文件上传功能
- 实用jquery操作表单元素的简单代码
- 将form表单通过ajax实现无刷新提交的简单实例
- asp.net 文件上传与刷新与asp.net页面与iframe之间的数据传输
- ASP的chr(0)文件上传漏洞原理和解决方法介绍
- asp.net上传文件到数据库的解决方案