`

我的工程图片上传部分笔记(二)

阅读更多

三:webwork.properties

webwork.multipart.parser = com.opensymphony.webwork.dispatcher.multipart.PellMultiPartRequest

//指定文件上传到服务器中的一个临时目录

四:picNews.xwork.xml

<xwork>

    <package name="picNews" namespace="/picNews" extends="jjyx-basic">

     <interceptors>

           <interceptor name="savePicNews" class="com.opensymphony.webwork.interceptor.FileUploadInterceptor">

              <param name="allowedTypes">image/jpeg/jpg/bmpparam>

              <param name="maximumSize">10000000param>

          interceptor>

 

           <interceptor name="updatePicNews" class="com.opensymphony.webwork.interceptor.FileUploadInterceptor">

              <param name="allowedTypes">image/jpeg/jpg/bmpparam>

              <param name="maximumSize">10000000param>

           interceptor>

           <interceptor-stack name="fileUploadStack">

              <interceptor-ref name="upload"/>

              <interceptor-ref name="defaultStack"/>

           interceptor-stack>

           <interceptor-stack name="loadStack">

              <interceptor-ref name="upload"/>

              <interceptor-ref name="defaultStack"/>

           interceptor-stack>

      interceptors>

      

       <default-interceptor-ref name="fileUploadStack"/>

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

<action name="savePicNews" class="savePicNewsAction">

           <result name="300.201" type="redirect">/picNews/listPicNews.ms?siteId=${siteId}result>

           <interceptor-ref name="params"/>

<!---->

           <interceptor-ref name="basicStack"/>

           <interceptor-ref name="fileUploadStack"/>

           <interceptor-ref name="model-driven"/>

<!---->

action>

 

<action name="updatePicNews" class="updatePicNewsAction">

           <result name="300.202"

type="redirect">/picNews/listPicNews.ms?siteId=${siteId}result>

           <interceptor-ref name="params"/>

           <interceptor-ref name="basicStack"/>

           <interceptor-ref name="loadStack"/>

           <interceptor-ref name="model-driven"/>

action>

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

五:jsp部分 

picArticleAdd.jsp

 <body>

<form action="/picNews/savePicNews.ms? siteId=${siteId }"

method="post" enctype="multipart/form-data"

name="myform" onsubmit="return chkSubmit();">

// enctype="multipart/form-data"为文件上传必须的部分

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

<tr>

      <td bgcolor="#F4F4F4" align="center"><p><strong>图片地址strong>p>td>

 

      <td bgcolor="#F4F4F4" align="left"><input name="photoUrl" type="file" size="30" id="file1" onchange="test()">td>

 tr>

 

 <tr><td bgcolor="#F4F4F4" align="center"><strong>图片预览strong>td><td  bgcolor="#F4F4F4" align="left">

      <img id="showimg" width="${width }" height="${height}"/>td>

 tr>

 总结:

当程序进入到action中时,开始处理上面代码中的photoUrl,此时文件已上传到服务器中的一个临时目录(同时被注入到action,就是你看到的photoUrl),此临时目录由webwork.properties指定,你必须将此文件拷贝到你需要的目录,否则action执行完毕,此文件会被删除,准确说是拦截器处理后删除了临时文件,这一段结论的前提是你使用拦截器处理上传

 

对于webwork.properties的一些处理,webwork in action上推荐使用webwork.multipart.parser=jakarta而不是默认的pell,如果使用前者,不要忘了在你的lib中加入commons-fileupload.jar 

 

需要注意的问题:
      
在使用fileUpload拦截器的时候应该避免使用execAndWait拦截器,否则很有可能会
出现空指针,因为execAndWait拦截器会在另一个线程处理action,而原来的线程会删掉临时文件,所以当你在action中处理文件的时候很有可能文件已被删掉,虽然这并非一定会出现,但毕竟不安全

// enctype="multipart/form-data"为文件上传必须的部分

         此标记告知浏览器需要发送以某种方式编码的HTTP请求,而在这种编码方式下,上传文件才能被处理,Webwork会自动识别这种类型的请求,然后将HttpServletRequest对象封装为一个特别的MultiPartRequestWrapper(在com.opensymphony.webwork.dispatcher.multipart包中),这个对象会从request的余下部分中把文件正确地解析出来,让你可以获得上传文件的临时java.io.File对象的句柄,以及文件的内容类型和初始文件名。
评论

相关推荐

    c#课程设计连接sqlserver数据库,笔记本,存储修改文字图片等.zip

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...

    淘淘商场缺少的第三天笔记

    - 商品通常需要配图来展示,因此后台管理系统需要提供图片上传功能,以便用户上传商品图片。这可能涉及到图片的压缩、存储、预览等技术。 3. **富文本编辑器(kindEditor)**: - 为了方便用户编辑商品详情,后台...

    Android学习笔记

    ### Android学习笔记知识点详解 #### 一、移动通信技术概览 - **1.1 G-4G介绍** 移动通信技术的发展经历了从1G到4G的历程,每一代技术都有其特点和技术进步。1G是第一代移动通信系统,采用模拟信号传输,主要用于...

    (HOT)ImageCropper图片截取

    在现代互联网应用中,用户经常需要上传个人照片或图像,并可能需要按照特定尺寸或比例进行裁剪,以适应不同的展示需求。ImageCropper工具就是为了解决这个问题而设计的,它允许用户在上传图像后,自由选择裁剪区域,...

    pc样本学习笔记之脚本类恶意程序的快速分析技巧.docx

    ### pc样本学习笔记之脚本类恶意程序的快速分析技巧 #### 一、概述 在当前复杂的网络环境中,脚本类恶意程序因其隐蔽性强、传播迅速等特点,成为了网络安全防护中的重要威胁之一。针对这类恶意程序的快速分析能力...

    android 豆瓣客户端

    这部分需要处理用户上传图片的功能,可能涉及到图片处理库,如Glide或Picasso。同时,需要实现用户信息的更新和保存。 “我的日记”模块则涉及到笔记和日记的撰写和管理。开发者需要实现文本编辑器,支持文字格式化...

    VB计算机高级语言多媒体教学演示系统设计(源代码+系统+开题报告+外文翻译).zip

    系统可能还包括课件管理模块,用于上传、编辑和组织教学资源,以及学生互动模块,如答题系统或笔记功能,以增强教学的参与度和效果。 开题报告是整个项目开始前的重要文档,它通常包含项目背景、目标、技术路线、...

    致远A6数据库分离代码,历史数据部署,文件配置要点

    根据服务器配置,整个工程时间至少需要两天,其中大部分时间用于数据备份,数据库分离代码执行时间预计12个小时(我这个数据很大,所以.....)。分离之后的数据库,用来部署为在用服务器。分离前的数据库用来部署历史...

    java进销存管理系统(jsp+mssql).zip

    6. **文件上传下载**:可能涉及到用户在系统中上传商品图片或下载报表等功能,会用到HTTP协议和文件流操作。 7. **权限管理**:系统可能有用户登录、角色权限分配等,涉及会话管理、认证和授权。 8. **异常处理**:...

    干货网站ssmcjp

    简书是一个知名的中文写作和分享平台,提供了笔记本功能,用户可以在其中撰写文章、笔记等,并进行分类管理。适合技术爱好者记录学习心得、项目经验等内容。特点如下: - **界面简洁**:操作界面清晰,专注于写作...

    响应式建筑公司企业站模板_网站模板_企业网站模板_模板网站.zip

    该模板包含了完整的网站结构和元素,包括首页、关于我们、服务项目、工程案例、新闻动态、联系我们等多个页面模版,覆盖了建筑公司网站通常需要展示的各项内容。通过这些模块,建筑公司可以详细介绍其业务范围、项目...

    ClassMeet:SE339 的课程协作网站项目

    5. **文件共享**:学生可以上传和下载课件、作业、笔记等,便于协作和复习。 6. **事件日历**:一个集成的日历功能可以帮助学生跟踪课程时间、作业截止日期和其他重要事件。 7. **通知系统**:提醒用户关于新消息...

Global site tag (gtag.js) - Google Analytics