文档章节

使用Struts2上传图片

小和尚敲代码
 小和尚敲代码
发布于 2016/02/03 18:00
字数 556
阅读 93
收藏 4

在Struts2中为我们提供了比较简单的文件上传方式.

首先引入commons-fileupload-x.jar、commons-io-x.jar 这两个jar包,然后引入Struts2相关jar包

 

接下来新建一个jsp文件:写一个文件上传表单,这里需要特别注意要在form加上enctype="multipart/form-data"  method="post" .

<s:form id="upload-form-1" name="upload-form-1"
        action="/user/bookAction!uploadbook" method="post"
        enctype="multipart/form-data">
        书籍名称:<input type="text" name="uploadbookform.book_name"/><br>
                书籍封页图:<input type="file" name="uploadbookform.book_pic"/><br>
        作者:<input type="text" name="uploadbookform.book_author"/><br>
        译者:<input type="text" name="uploadbookform.book_translator"/><br>
        内容简介:<input type="text" name="uploadbookform.publish_info"/><br>
        书籍分类:<input type="text" name="uploadbookform.book_labels"/><br>
        <input type="submit" >
    </s:form>

然后是写Action类:

public class BookAction extends ActionSupport implements RequestAware {
    private Map<String, Object> request;
    private Map<String, Object> session = ActionContext.getContext()
            .getSession();
    
    @Override
    public void setRequest(Map<String, Object> request) {
        // TODO Auto-generated method stub
        this.request = request; // 将该方法中的request赋值给成员变量request
    }

    @Resource(name = "bookManage")
    private BookServiceImpl bookservice;

    private List<Book> booklist;
    private UploadBookForm uploadbookform;
    private static final long serialVersionUID = 1L;

    public UploadBookForm getUploadbookform() {
        return uploadbookform;
    }

    public void setUploadbookform(UploadBookForm uploadbookform) {
        this.uploadbookform = uploadbookform;
    }
/**
     * 上传书籍(同时书籍含有自定义标签)
     * 
     * @return
     */
    public String uploadbook() {
        String realPath = ServletActionContext.getServletContext().getRealPath("/BookImage");
        
         SimpleDateFormat date = new SimpleDateFormat("/yyyy/MM/dd");  
            String dateTime = date.format(new Date());  
            realPath += dateTime;  
              
            uploadbookform.setBook_picFileName(UUID.randomUUID().toString() + uploadbookform.getBook_picFileName().substring(uploadbookform.getBook_picFileName().lastIndexOf('.')));  
              
            System.out.println(uploadbookform.getBook_picContentType());   
            //控制图片类型  
            if(uploadbookform.getBook_picContentType().equals("image/gif") || uploadbookform.getBook_picContentType().equals("image/jpeg") ||   
                    uploadbookform.getBook_picContentType().equals("image/png") || uploadbookform.getBook_picContentType().equals("image/bmp") ||   
                    uploadbookform.getBook_picContentType().equals("image/x-icon") || uploadbookform.getBook_picContentType().equals("image/pjpeg"))  
            {  
                //判断文件是否为空,并且文件不能大于2M  
                if(uploadbookform.getBook_pic() != null && uploadbookform.getBook_pic().length() < 2097152)  
                {    
                    //根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。  
                    File filePath = new File(new File(realPath), uploadbookform.getBook_picFileName());    
                    //判断路径是否存在    
                    if(!filePath.getParentFile().exists())  
                    {  
                        //如果不存在,则递归创建此路径   
                        filePath.getParentFile().mkdirs();  
                    }  
                    System.out.println(uploadbookform.getBook_picFileName());   
                    System.out.println(filePath.getParentFile());   
                    //将文件保存到硬盘上,Struts2会帮我们自动删除临时文件  
                    try {  
                        FileUtils.copyFile(uploadbookform.getBook_pic(), filePath);  
                    } catch (IOException e) {  
                        System.out.println("图片上传失败");   
                        e.printStackTrace();  
                    }   
                }    
            } 
        
        bookservice.uploadBook(uploadbookform);
        addActionMessage("上传成功");
        return "uploadbooksuccess";
    }
    }

上面还是要遵守约定大于配置,注意名称的命名,uploadFileContentType和uploadFileFileName必须遵守Struts2的规则.

 

Struts2默认文件的上传大小是2M,当大于2M时会抛出异常,这里我们可以在struts.xml文件里做如下配置,控制上传文件的大小:

<struts>    
<constant name="struts.multipart.maxSize" value="10485761"/>     
</struts>


© 著作权归作者所有

共有 人打赏支持
小和尚敲代码
粉丝 23
博文 86
码字总数 28687
作品 0
南昌
程序员
struts2整合CKEditor和CKFinder实现上传

上一篇文章给大家分享了CKEditor+CKFinder+JSP实现了在线编辑器上传图片的功能,这里在给大家分享一下如何在前面的基础上在struts2下实现这样的功能。 实现与Struts2的整合,整合的过程确实e...

teacheryang
2016/10/08
0
0
JEECMS v3.0.2正式版开源发布

JEECMS V3.0.2 FINAL终于和大家见面了,这是3.x的第一个正式版。大家一直关注的源码也已一并发布。 3.x相对于2.x做了很大的改进,不管从数据库设计还是技术架构上,都有很大变化。事实上,3...

小编辑
2011/01/05
1K
2
SSH2中配置了*.action 访问jsp页面访问出错

为了做图片上传时候能够用request得到路径。只能把struct2中在web.xml的配置改成了 struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2...

小石头哥
2012/08/21
2.7K
8
ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案

在struts2应用中使用ueditor富文本编辑器上传图片或者附件时,即使配置好了上传路径信息,也会出现"未找到上传文件"的错误提示,出先该问题的原因是:在配置struts过滤器,过滤路径设置/*方式...

Jialy
2014/03/21
0
16
Java程序员从笨鸟到菜鸟之(七十一)细谈struts2(十三)struts2实现文件上传和下载详解

文件上传和文件下载是我们在web应用程序中常用的两个功能,在java中,实现这两种功能的方式也有很多种,其中struts2就给我们提供了一种算是比较简单的方式吧,下面我们就一起来看一下,首先我...

长平狐
2012/11/12
531
1

没有更多内容

加载失败,请刷新页面

加载更多

WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
今天
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
今天
14
1
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0
谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linux-tao
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部