Struts2通过commons-fileupload实现文件上传

14 篇文章 0 订阅

Struts2通过commons-fileupload实现文件上传 - Java中文网整理校对

http://www.javaweb.cc/

 
upload.jsp
<%@ page language="java" contentType="text/html; charset=GBK"%> 
< %@taglib prefix="s" uri="/struts-tags"%> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=GBK" /> 
<title>修改默认的提示信息</title> 
</head> 
<body> 
<div style="color:red"> 
<!--采用红色的前景色,输出错误信息 --> 
<s:fielderror/> 
</div> 
<form action="upload.action" method="post" enctype="multipart/form-data"> 
    文件标题:<input type="text" name="title" /><br> 
    选择文件:<input type="file" name="upload" /><br> 
    <input value="上传" type="submit" /> 
</form> 
</body> 
</html>
succ.jsp
<%@ page language="java" contentType="text/html; charset=GBK"%> 
< %@taglib prefix="s" uri="/struts-tags"%> 
<html> 
    <head> 
        <title>上传成功</title> 
    </head> 
    <body> 
        上传成功!<br> 
        文件标题:<s:property value=" + title"/><br> 
        文件为:<img src="<s:property value="'upload/' + uploadFileName"/>"/><br> 
    </body> 
</html>
web.xml
    <!-- 定义Struts2的FilterDispathcer的Filter --> 
    <filter> 
        <filter-name>struts2</filter-name> 
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 
    </filter>
    <!-- FilterDispatcher用来初始化struts2并且处理所有的WEB请求。 --> 
    <filter-mapping> 
        <filter-name>struts2</filter-name> 
        <url-pattern>/*</url-pattern> 
    </filter-mapping>
struts.xml
<struts> 
    <constant name="struts.custom.i18n.resources" value="globalMessages"/> 
    <constant name="struts.i18n.encoding" value="GBK"/> 
    <package name="upload" extends="struts-default"> 
        <action name="upload" class="jCuckoo.UploadAction"> 
            <interceptor-ref name="fileUpload">  
                <param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg</param>  
                <param name="maximumSize">20000</param>  
            </interceptor-ref>  
            <interceptor-ref name="defaultStack"/>    
            <!-- 保存路径savePath依赖注入 -->          
            <param name="savePath">/upload</param> 
            <result name="input"> /upload.jsp</result>  
            <result>/succ.jsp</result>   
        </action> 
    </package> 
</struts>
globalMessages.properties
struts.messages.error.content.type.not.allowed=您上传的文件类型只能是图片文件!请重新选择! 
struts.messages.error.file.too.large=您要上传的文件太大,请重新选择!
UploadAction.java
public class UploadAction extends ActionSupport { 
    private String title; 
    private File upload; 
    private String uploadContentType; 
    private String uploadFileName;
    // 接受依赖注入的属性 
    private String savePath;
    // 接受依赖注入的方法 
    public void setSavePath(String value) { 
        this.savePath = value; 
    } 
    private String getSavePath() throws Exception { 
        return ServletActionContext.getRequest().getRealPath(savePath); 
    } 
    public void setTitle(String title) { 
        this.title = title; 
    } 
    public void setUpload(File upload) { 
        this.upload = upload; 
    } 
    public void setUploadContentType(String uploadContentType) { 
        this.uploadContentType = uploadContentType; 
    } 
    public void setUploadFileName(String uploadFileName) { 
        this.uploadFileName = uploadFileName; 
    } 
    public String getTitle() { 
        return (this.title); 
    } 
    public File getUpload() { 
        return (this.upload); 
    } 
    public String getUploadContentType() { 
        return (this.uploadContentType); 
    } 
    public String getUploadFileName() { 
        return (this.uploadFileName); 
    } 
    @Override 
    public String execute() throws Exception { 
        // 以服务器的文件保存地址和原文件名建立上传文件输出流 
        FileOutputStream fos = new FileOutputStream(getSavePath() + "\\"+ getUploadFileName()); 
        FileInputStream fis = new FileInputStream(getUpload()); 
        byte[] buffer = new byte[1024]; 
        int len = 0; 
        while ((len = fis.read(buffer)) > 0) { 
            fos.write(buffer, 0, len); 
        } 
        return SUCCESS; 
    } 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值