strut2 上传文件

简介: jsp页面代码<form  action ="${ctx}/order/upload.action" method="post" enctype="multipart/form-data"> <s:file name="upload"  label="上传"/> 或者 <input name="upload" type="file">  <


jsp页面代码

<form  action ="${ctx}/order/upload.action" method="post" enctype="multipart/form-data">
 <s:file name="upload"  label="上传"/>
 或者
 <input name="upload" type="file">
  <button>提交</button>
 </form>


服务后台代码:

需要两个jar包一个是commons-fileupload.jar,另一个是commons-io.jar


//注意,file并不是指前端jsp上传过来的文件本身,而是文件上传过来存放在临时文件夹下面的文件

    private File upload;//上传的文件内容的对象与表单中的name属性一致
     
    private String uploadContentType;//Struts2约定的代表上传文件的内容类型(MIME)
    private String uploadFileName;//Struts2约定的代表上传的文件的名
    省略了get,set方法
    
       //文件上传方法
    public String upload(){
        //服务端存放上传文件目录
        String destPath = ServletActionContext.getServletContext().getRealPath("/upload");
        System.out.println(destPath);
        File file=new File(destPath);
        if(!file.exists()) file.mkdirs();
        System.out.println(file);
        try {
            FileUtils.copyFile(upload, new File(file,uploadFileName));
        } catch (IOException e) {
            e.printStackTrace();
            return ERROR;
        }
        
        return SUCCESS;
                
    }


strut配置

<action name="upload" class="orderAction" method="upload" >
<result name="success">/WEB-INF/pages/order/orderdetail.jsp</result>
</action>

上传后的文件保存在tomcat安装路径/webapps/应用名称/upload文件夹下

我的机器为

D:\Program Files\apache-tomcat-7.0.62\webapps\admin\upload





Struts 2是通过Commons FileUpload文件上传。
Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。从而我们就能够以本地文件方式的操作浏览器上传的文件


再添加<constant name="struts.multipart.maxSize" value ="10240000" />,Struts2的文件上传功能默认最大只能上传2M大小。这句重新指定了上传文件的最大限制,单位是字节。以这句为例,上传文件不能超过 10240000字节。注意,不能写成1024*1000*10这种形式。


在<package>标签之外添加<constant name="struts.multipart.saveDir" value ="/temp"/>,这句指定了上传文件的临时存放目录,以这句为例,临时存放目录为应用所在根目录下的temp文件夹,假设我的应用放在D:\Program Files\apache-tomcat-6.0.24\webapps下,那么临时存放目录就是D:\temp。也可以指定一个绝对路径。目录不存在也没关系,会自动创建。

struct 配置文件上传拦截器

</action>
        <!-- 上传 -->
        <action name="upload"
            class="com.erentc.Web.Action.hp.UploadeAction">
            <!-- 指定系统提供的上传文件过滤的拦截器 -->
            <interceptor-ref name="fileUpload">
                <param name="allowedTypes">
                    image/gif,image/pjpeg,image/x-png,image/jpg
                </param><!-- 允许上传的文件类型 -->
                <param name="maximumSize">900000</param><!-- 允许上传的文件大小 -->
            </interceptor-ref>
            <!-- 引用系统默认拦截器 -->
            <interceptor-ref name="defaultStack" />
            <!-- 通过param 元素注入savePath属性 -->
            <param name="savePath">/GoodsPic/upload</param><!-- 配置上传的路径 -->
            <result name="input">/uplode.jsp</result><!--发生错误时候 跳转的页面 -->
            <result name="success">/succ.jsp</result>
        </action>




the request was rejected because its size (3020812) exceeds the configured maximum (2097152)


本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1681576

目录
相关文章
|
存储 安全 Java
一文带你搞懂OAuth2.0
一文带你搞懂OAuth2.0
367 0
|
8月前
|
机器学习/深度学习 人工智能 搜索推荐
《探秘AI驱动的个性化推荐系统:精准触达用户的科技密码》
在这个信息爆炸的时代,AI驱动的个性化推荐系统应运而生,通过数据收集与处理、构建用户画像、核心算法(协同过滤与基于内容的推荐)及深度学习技术,精准洞察用户需求。它广泛应用于电商、视频平台等领域,提升用户体验和商业效益。尽管面临数据稀疏性、隐私保护等挑战,未来将更加精准、实时并注重用户隐私。
480 1
《探秘AI驱动的个性化推荐系统:精准触达用户的科技密码》
|
10月前
|
API 容器
【HarmonyOS Next开发】Navigation使用
Navigation是路由容器组件,包括单栏(Stack)、分栏(Split)和自适应(Auto)三种显示模式。适用于模块内和跨模块的路由切换。 在页面跳转时,应该使用页面路由router,在页面内的页面跳转时,建议使用Navigation达到更好的转场动效场景。
422 8
【HarmonyOS Next开发】Navigation使用
|
9月前
|
消息中间件 Arthas Java
阿里云开发者2024年度技术热文盘点!
阿里云开发者2024年度技术热文盘点!
阿里云服务器购买后,怎么申请开具发票?
阿里云用户可在用户中心的发票管理页面开具电子或纸质发票。首次开票需设置发票抬头,支持个人或企业,可选增值税普通或专用发票。个人账号无法直接开企业发票,需变更实名认证。发票税率因产品而异,通常为6%或13%。发票抬头可修改,纸质发票邮寄费用由阿里云承担(特殊情况除外)。电子发票同样可报销。更多详情见阿里云帮助中心。
681 106
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
[大语言模型-论文精读] ACL2024-长尾知识在检索增强型大型语言模型中的作用
[大语言模型-论文精读] ACL2024-长尾知识在检索增强型大型语言模型中的作用
302 0
|
测试技术 Nacos Docker
xxl任务绑定一台服务器的两个项目
项目需在测试和生产环境自动注册到xxl服务。之前测试环境未注册,且手动注册。解决方案:修改xxl.nacos配置,设置xxl.job.executor.ip为特定IP,避免自动注册错误的IP。因同一机器上运行两个项目,需分配不同端口,如测试环境设为9997,并在docker运行命令中映射该端口。最后在阿里云开放9997端口并重启服务,实现自动注册。
180 1
|
机器学习/深度学习 人工智能
论文介绍:深入解析神经语言模型的规模定律
【4月更文挑战第2天】OpenAI的论文《Scaling Laws for Neural Language Models》探索了模型规模、数据量和计算资源与性能的幂律关系。研究发现,增大模型参数、数据集和计算投入能按幂律提升性能,且模型性能与架构细节关联较小。大型模型在样本效率上更优,能在少量数据上达到与小型模型相当的性能。尽管存在理论解释和数据规模等方面的局限性,该研究为优化资源分配和设计高性能语言模型提供了关键洞见。
246 2
论文介绍:深入解析神经语言模型的规模定律
|
人工智能 自然语言处理 安全
AI语音克隆技术企业携手智能硬件制造商革新用户交互体验——ElevenLabs赋能rabbit r1设备实现自然流畅的人机对话
【4月更文挑战第1天】ElevenLabs与rabbit合作,将AI语音克隆技术应用于r1设备,实现自然人机对话。r1借助ElevenLabs的低延迟语音回应技术和rabbit的LAM,提供真实流畅的交互体验。双方旨在创建动态副驾驶般的用户体验,同时,这也预示着智能家居和个人助理产品的未来趋势,即更加人性化和智能化。但科技进步也伴随着隐私和过度依赖的问题,企业需兼顾用户体验与安全。
265 1
AI语音克隆技术企业携手智能硬件制造商革新用户交互体验——ElevenLabs赋能rabbit r1设备实现自然流畅的人机对话
|
数据挖掘 数据处理
信息系统规划方法
信息系统规划方法
792 5

热门文章

最新文章