Struts2文件上传步骤的详细介绍

1.导入jar包

        <!--文件上传-->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.2.2</version>
        </dependency>

2.设置表单提交属性

 <s:form action="upload.action" enctype="multipart/form-data" method="post">
        <s:file name="upload" label="选择文件"/>
        <s:submit name="submit" value="上传"/>
    </s:form>

注意点:
表单的提交方式必须为post
表单设置enctype="multipart/form-data"

3.编写上传的Action

public class UploadAction {
 
    private File upload;//变量名要与jsp中的s:file标签的name一致
    private String uploadContentType;//上传文件的mimeType类型
    private String uploadFileName;//上传文件的名称
    private String savePath;//获取文件上传路径
    //省略get,set方法
	
	@Override
	public String execute() throws Exception {
		byte[] buffer = new byte[1024];
		FileInputStream fis=new FileInputStream(this.getUpload()); //创建输入流
		FileOutputStream ois=new FileOutputStream(getSavePath()+"\\"+this.getUploadFileName());  //创建输出流
		int length=fis.read(buffer);  //从输入流中读取数据
		while((length>0){ 
		fos.write(buffer,0,length);  //写入数据
		length=fis.read(buffer);
		}
		fis.close();
		fos.flush();
		fos.close();
		return SUCCESS;
	}

4.配置struts.xml的Action

<!-- 编码格式统一 -->
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<!-- 文件大小设置20M,默认为2M -->
<constant name="struts.multipart.maxSize" value="20971520"/>

<package name="default" extends="struts-default">

<action name="upload" class="con.wg.action.UploadAction ">
  <!-- 配置上传文件类型 -->
  <param name="allowedTypes">
  image/bmp,image/jpeg,image/png
  </param>
  <!-- 配置上传文件最大不能超过多少(单位Byte,这里是50M) -->
  <param name="maximumSize">5288608</param>
 
  <!-- 传递到action中的savePath参数,用作存储文件的相对路径 -->
  <param name="savePath">/upload</param>
  <result name="success">/upload_success.jsp</result>
  </action>

</package>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值