0 0

struts2上传文件的时候,action里面获取上传文件的文件名和类型的原理是什么?5

在jsp页面代码:

 

<s:file name="upload" label="上传的文件" />

 action中,声明代码:

 

private File upload;
private String uploadContentType; // 文件的内容类型
private String uploadFileName; // 上传文件名

 

这里有个疑问, 文件名和文件类型是如何获取的?

大家科普一下吧

2012年9月30日 11:02

1个答案 按时间排序 按投票排序

0 0

采纳的答案

约定,在struts2内部的的FileUploadInterceptor完成的

String[] fileName = multiWrapper.getFileNames(inputName);//得到请求的所有文件名

                if (isNonEmpty(fileName)) {
                    // get a File object for the uploaded File
                    File[] files = multiWrapper.getFiles(inputName);
                    if (files != null && files.length > 0) {
                        List<File> acceptedFiles = new ArrayList<File>(files.length);
                        List<String> acceptedContentTypes = new ArrayList<String>(files.length);
                        List<String> acceptedFileNames = new ArrayList<String>(files.length);
                        String contentTypeName = inputName + "ContentType";//默认就是input名称+ContentType
                        String fileNameName = inputName + "FileName";//默认就是input名称+FileName

                        for (int index = 0; index < files.length; index++) {
                            if (acceptFile(action, files[index], fileName[index], contentType[index], inputName, validation, ac.getLocale())) {
                                acceptedFiles.add(files[index]);
                                acceptedContentTypes.add(contentType[index]);
                                acceptedFileNames.add(fileName[index]);
                            }
                        }

                        if (!acceptedFiles.isEmpty()) {
                            Map<String, Object> params = ac.getParameters();//添加到parameters中 这样就可以通过OGNL注入到action了

                            params.put(inputName, acceptedFiles.toArray(new File[acceptedFiles.size()]));
                            params.put(contentTypeName, acceptedContentTypes.toArray(new String[acceptedContentTypes.size()]));
                            params.put(fileNameName, acceptedFileNames.toArray(new String[acceptedFileNames.size()]));
                        }
                    }

2012年9月30日 11:19

相关推荐

    Struts2上传文件出错

    // 上传文件内容类型集合 private List&lt;String&gt; fileContentType; public List&lt;File&gt; getFile&#40;&#41; { return file; } public void setFile&#40;List&lt;File&gt; file&#41; { this.file = file; } ...

    Struts2属性文件详解

    Struts2属性文件详解 struts.configuration 该属性指定加载Struts 2...该属性的默认值为struts- default.xml,struts-plugin.xml,struts.xml,看到该属性值,所以应该明白为什么Struts 2框架默认加载struts.xml文件了.

    ajax_struts2_上传与下载_无刷新

    3. 在struts2的Action通过2种不同的实现方法返回json格式的字符串。 4. 针对商品实现简单无刷新上传与下载 4. 批量导入数据采用的是导入test文件夹下的测试压缩包upload.rar上传到服务器的临时目录,然后利用WinRar....

    struts2文件上传,与struts2-xml校验

    struts2文件上传,与xml校验 struts2文件校验可通过xml配对action的名称去校验属性的值。例如UploadAction.java中有一个book的属性。那么我可以定义一个UploadAction-validation.xml去校验这个book属性的内容。 xml的...

    Struts2 下载文件不同浏览器兼容问题.doc

    Struts2 下载文件不同浏览器兼容问题,实现不同浏览器下载文件名是action名的问题

    Struts2\constant应用

    该属性的默认值为struts-default.xml,struts-plugin.xml,struts.xml,看到该属性值,读者应该明白为什么Struts 2框架默认加载struts.xml文件了。 struts.objectFactory 该属性指定Struts 2中的action由哪个容器...

    poi+struts的excel导入action

    poi+struts的excel导入action,加入包,配置文件就可以用

    ssh2(struts2+spring2.5+hibernate3.3)自动生成模版

    4个xml文件(applicationContext-dao.xml(dao注入配置),applicationContext-service.xml(service注入配置),action-servlet.xml(action注入配置),struts-{自定义的存放包名}.xml(struts2的action配置文件)) ...

    strust文件上传

    /**//*截取上传文件的后缀名,此时得到了文件的类型*/ type = type.substring(i+1); } // 限制上传类型为jpg,txt,rar; if (!type.equals("jpg") && !type.equals("txt")&& !type.equals("bmp")) {//当上传的...

    ssh(structs,spring,hibernate)框架中的上传下载

    WEB-INF下的applicationContext.xml为Spring的配置文件,struts-config.xml为Struts的配置文件,file-upload.jsp为文件上传页面,file-list.jsp为文件列表页面。  本文后面的章节将从数据持久层->业务层->Web层的...

    java 面试题 总结

    引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...

    java+mysql实现的代码分享网(所有源码已开源,效果可看网址:www.admintwo.com)

    同时也实现了文件上传(基于struts2的文件上传功能)。 4、代码下载,下载功能会判断用户是否下载过该代码,若下载过则不扣积分。下载功能也是基于struts2的下载模块实现的。 5、代码评论,该功能是我仿照qq空间评论...

    超级有影响力霸气的Java面试题大全文档

    引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...

    eclipse插件Demo

    首先我说下我做的这个插件:用于springMVC,由于springMVC没有像struts1 2 那样,有个专门的跳转路径的配置文件,导致springMVC不能直观方便的看到方法(Action)和路径对应的匹配,所以我这个插件会把eclipse里工作...

    好用的代码生成源码

    框架将各个零散的框架(struts,strust2,springmvc,hibernate,ibatis,spring_jdbc,flex)搭建好,并内置一个代码生成器,辅助项目开发,可以生成java的hibernat model,dao,manager,struts+struts2 action类,可以生成jsp...

Global site tag (gtag.js) - Google Analytics