Struts2+jsp上传和下载文件

一、准备

首先导入必要的jar包,common-fileupload

确保表单的enctype="multipart/form-data" <s:from action="actionName" enctype="multipart/form-data" method="post">

二、上传单个文件

JSP关键代码:

上传界面:

<%@ taglib prefix="s" uri="/struts-tags" %>

<body>
    <s:form action="fileUpload1_2" enctype="multipart/form-data" method="post">
    <s:file name="uploadFile" label="上传文件"></s:file>
    <s:submit value="上传"></s:submit>
    <s:reset value="重置"></s:reset>
    </s:form>
  </body>

success界面:

<body>
    上传文件名:${uploadFileFileName }<br/>
    上传文件类型:${uploadFileContentType }
  </body>

strut.xml的关键代码

1.首先加入两个常量

<constant name="struts.i18n.encoding" value="utf-8"></constant>

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

<!-- 以上两个常量分别用来“保持编码与JSP页面编码统一”、“表单的请求容量大小(单位:Byte)” -->

<package name="upload" namespace="/" extends="struts-default">

<action name="fileUpload2" class="action.FileUploadAction">
  <!-- 配置上传文件拦截器(可不配置) -->
  <interceptor-ref name="fileUpload">
  <!-- 配置上传文件类型 -->
  <param name="allowedTypes">
  image/bmp,image/jpeg,image/png
  </param>
  <!-- 配置上传文件最大不能超过多少(单位Byte,这里是80M) -->
  <param name="maximumSize">8288608</param>
  </interceptor-ref>
  <interceptor-ref name="defaultStack"></interceptor-ref>
  <!-- 传递到action中的savePath参数,用作存储文件的相对路径 -->
  <param name="savePath">/MyUpload</param>
  <result name="success">/fileUpload/fileUploadResult.jsp</result>
  <result name="input">/fileUpload/fileUpload2.jsp</result>
  </action>

</package>

action类的关键代码

public class FileUploadAction extends ActionSupport{
//上传的文件
private File uploadFile;
//上传文件的类型
private String uploadFileContentType;
//上传文件的名字
private String uploadFileFileName;
//上传文件的保存路径(相对)
private String savePath;
@Override
public String execute() throws Exception {
try {
//通过上传的文件获取输入流
InputStream is = new FileInputStream(uploadFile);
//获取上传文件保存的绝对路径
String uploadPath = ServletActionContext.getServletContext().getRealPath(savePath);
//接下来的3行用来判断是否存在存储文件的目录,如果不存在则创建
File file = new File(uploadPath);
if(!file.exists()){
file.mkdirs();
}
//获取存储文件的File
File toFile = new File(uploadPath,this.getUploadFileFileName());
//根据改file获取输出流,用于存储文件
OutputStream os = new FileOutputStream(toFile);
//缓存
byte[] buffer = new byte[1024];
int length = 0;
//读取输入流的数据,存储在buffer中,并用length获取输入流读取的字节数,如果lengh不大于0则代表已无数据可读
while((length=is.read(buffer))>0){
//通过存储在buffer中的数据和读取的字节数,向输出流写数据(即存储)
os.write(buffer,0,length);
}
os.flush();
is.close();
os.close();
} catch (Exception e) {
e.printStackTrace();
throw new Exception(e);
}
return SUCCESS;
}

}

运行截图:

上传界面

上传完毕的界面:

使用的是tomcat服务器,文件上传后保存在tomgcat的目录下:webapps/项目名/指定的相对目录(savePath)/文件名.后缀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值