文档章节

使用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>


© 著作权归作者所有

共有 人打赏支持
小和尚敲代码
粉丝 24
博文 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
问一下struts2用ajax上传图片的问题

问一下struts2用ajax上传图片的问题 用struts2上传的方式。但是不行。 百度谷歌了半了发现应该是ajax安全机制问题。传到后台的不是数据流。 而是字符串。但是如何处理这些字符串呢?...

th小米粥
2011/11/03
846
1
Java程序员从笨鸟到菜鸟之(七十一)细谈struts2(十三)struts2实现文件上传和下载详解

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

长平狐
2012/11/12
539
1
ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案

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

Jialy
2014/03/21
0
16

没有更多内容

加载失败,请刷新页面

加载更多

deepin中配置robot framework环境

本文永久更新地址:https://my.oschina.net/bysu/blog/2989005 【若要到岸,请摇船:开源中国 不最醉不龟归】 1.在终端中输入pip,回车,如果提示没有该命令,则先安转pip sudo apt-get inst...

不最醉不龟归
18分钟前
2
0
OSChina 周日乱弹 —— 钱不还,我就当你人不在了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享Bigleaf的单曲《小鹿》 《小鹿》- Bigleaf 手机党少年们想听歌,请使劲儿戳(这里) 周日在家做什么? 做手工呀, @poorfis...

小小编辑
今天
85
3
EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
今天
20
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
今天
29
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
35
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部