概述
一、准备
首先导入必要的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)/文件名.后缀
最后
以上就是甜甜墨镜为你收集整理的Struts2+jsp上传和下载文件的全部内容,希望文章能够帮你解决Struts2+jsp上传和下载文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复