zoukankan      html  css  js  c++  java
  • Struts 上传文件

    1. 客户端注意事项

    • method="post"
    • enctype="multipart/form-data"
    • <input type="file" name="upload"/>

    2. 文件上传

    1. Struts2 框架使用拦截器来完成文件上传,并且底层使用的也是 FileUpload 组件;
    2. FileUpload 拦截器默认在 dafaultStack 栈中,默认会执行的;
    3. 文件上传时,需要在 Action 类中定义三个属性:
      • private File upload, 该属性名与表单中file 的 name 属性名一致; 表示要上传的文件;
      • private String uploadFileName, 前段是 name 属性名 + FileName,表示上传文件的名称;
      • private String uploadContentType,前段是name属性名+ContentType,表示上传文件的 MIME 类型;
    4. 需要为上述的三个属性提供 set 方法,拦截器就可以注入值了;
    // 上传代码
    // 首先,判断上传的文件存在
    if(uploadFileName != null){
        // 处理文件名称
        String uuidname = UploadUtils.getUUIDName(uploadFileName);
        // 把文件保存到 D:\apache-tomcat-7.0.52\webapps\upload\
        String path = "D:\apache-tomcat-7.0.52\webapps\upload\";
    
        // 创建 file 对象
        File file = new File(path + uuidname);
    
        // 将上传文件,使用工具复制到新建文件
        FileUtils.copyFile(upload,file);
    
        // 将上传的文件路径,保存到数据库表中
        customer.setFilepat(path+uuidname);
    }
    
    public class UploadUtils {
        public static String getUUIDName(String filename){
    
        int index = filename.lastIndexOf(".");
        // 获取文件后缀名
        String lastname = filename.substring(index,filename.length());
    
        // 生成的uuid, 带有"-",需要替换 xxxx-xxxx-xxxx
        String uuid = UUID.randomUUID().toString().replace("-","");
        return uuid + lastname;
    }
    }
    

    3. 文件上传常见问题

    3.1 解决方案

    • 在 struts.xml 中对应的<action>标签下配置
      <result name="input">/jsp/error.jsp</result>

    3.2 配置上传文件大小

    • 文件上传的总大小默认值是 2M, 如果超出了 2M,程序会报出异常;该常量可以在default.properties中查看
    • 可以在 struts.xml 中设置常量,修改文件上传的默认在大小:
      <constant name="struts.multipart.maxSize" value="5000000"/>

    3.3 通过配置拦截器来设置上传文件的一些属性

    // struts.xml
    <action name="xxxx" class="xxxxx">
        // 引入默认的拦截器
        <interceptor-ref name="defaultStack">
            // 设置 fileUpload 拦截器的"单个上传文件的大小"属性
            <param name="fileUpload.maximumSize">2097152</param>
    
            // 设置fileUpload 拦截器的"扩展名"属性
            <param name="fileUpload.allowedExtensions">.txt</param>
    
        </interceptor-ref>
    </action>
    

  • 相关阅读:
    “是懒人造就了方法”——读后感
    多态性动手动脑
    数组问题随笔
    String java问题随笔
    java问题总结
    java问题随笔
    java一些问题的解答
    利用参数的值得返回来求和
    是懒人造就了方法——读后感
    大道至简读后感——JAVA伪代码
  • 原文地址:https://www.cnblogs.com/linkworld/p/7739624.html
Copyright © 2011-2022 走看看