Struts2做文件上传,底层封装了Fileupload

xiaoxiao2025-07-31  8

文件上传要素:

表单提交方式必须是post

表单中有<input type="File" name="upload">

提供工具类

public class UploadUtils {     // 解决文件名重复     public static String getUUIDFileName(String fileName) {         int idx = fileName.lastIndexOf(".");         String extions = fileName.substring(idx);         return UUID.randomUUID().toString().replace("-", "") + extions;     }

    public static void main(String[] args) {         System.out.println(UploadUtils.getUUIDFileName("aa.txt"));     }

表单的enctype属性必须为"multipart/form-data"

Action中提供3个属性,有set方法

private String uploadFileName;// 文件名称     private File upload;// 文件本身     private String uploadContentType;// 文件类型

if (upload != null) {             // 文件上传的路径             String path = "C:/upload";             // 一个文件目录下相同文件名的解决             String uuidFileName = UploadUtils.getUUIDFileName(uploadFileName);             // 创建目录             File file = new File(path);             // 文件上传             File dictFile = new File(path + "/" + uuidFileName);             FileUtils.copyFile(upload, dictFile);

        }         customerService.save(customer);

设置上传限制

<!--上传总量大小常量  -->     <constant name="struts.multipart.maxSize" value="5242880"/>

在<action>标签中修改默认拦截器参数

<interceptor-ref name="defaultStack">     <!-- 上传单个文件最大值 -->     <param name="fileUpload.maximumSize">2097152</param>     <!-- 文件后缀名,格式-->     <param name="fileUpload.allowedExtensions">.jpg,.bmp</param>      </interceptor-ref>

假如上传信息不规范,如超过文件最大值,在最好一个拦截器workflow检查没有通过会返回一个input为空的视图

解决

在<action>标签中加上,并在相应页面上回响错误信息<s:actionerror/>

<result name="input">/jsp/customer/add.jsp</result>

转载请注明原文地址: https://www.6miu.com/read-5034060.html

最新回复(0)