分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

struts2文件上传

发布时间:2023-09-06 01:48责任编辑:傅花花关键词:文件上传

https://www.cnblogs.com/wkrbky/p/5904787.html

https://www.cnblogs.com/justlove/p/6817276.html

?Commons-FileUpload组件
–Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目
 
?Commons-FileUpload组件特点
–使用简单:可以方便地嵌入到JSP文件中,编写少量代码即可完成文件的上传功能
–能够全程控制上传内容
–能够对上传文件的大小、类型进行控制
 
?需要下载Common-FileUplaod框架地址(当然MyEclipce中Struts2支持里自带有这两个包):
–http://jakarta.apache.org/commons/fileupload/
–下载commons-fileupload-1.2-bin.zip文件
–解压后得到commons-fileupload-1.2.jar
 
–http://jakarta.apache.org/commons/io/
–下载commons-io-1.3.2-bin.zip文件
–解压后得到commons-io-1.3.2.jar
 
 

基于表单的文件上传
 
?注意:上面是基于表单的上传,在form标签中有一个必须的属性值设置:enctype.
 
?如果要做文件上传功能必须将enctype值设为multipart/form-data.
 
?此外,文件上传还需要二个JAR文件支持:


文件上传页面upload.jsp(二选一表单即可)
 
<%@ taglib uri="/struts-tags" prefix="s"%> ???<body> ???????<form action="uploads" method="post" enctype="multipart/form-data"> ???????????文件: ???????????<input type="file" name="uploadImage"> ???????????<input type="submit" value="提交"> ???????</form> ???????或者(两个表单二选一即可) ???????<s:form action="uploads" method="post" enctype="multipart/form-data"> ???????????<s:file name=“uploadImage " label="选择上传的文件" /> ???????????<s:submit value="上传" /> ???????</s:form> ???</body>
 
Struts2.xml
 
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts> ???<!-- 要注意Struts2默认文件上传最大为2M即便你设置了<param name="maximumSize">5242880</param> ???????  当上传的文件大于2M时候也会出错的这时要设置,另外一个常量 ???<constant name="struts.multipart.maxSize" value="1000000000"/> --> ???????<package name="Struts2" extends="struts-default" namespace="/"> ???????<action name="uploads" class="com.struts.UploadAction"> ???????????<!-- 指定(限制)上传文件的类型,定义局部拦截器,修改默认拦截器的属性 ????????????????"fileUpload.maximumSize" :限制上传最大的文件大小。 ????????????????"fileUpload.allowedTypes":允许上传文件的类型。 ????????????????"fileUpload.allowedExtensions":允许上传文件的可扩展文件类型。 --> ???????????<interceptor-ref name="defaultStack"> ???????????????<param name="fileUpload.maximumSize">500000000</param> ???????????????<param name="fileUpload.allowedTypes">text/plain,application/vnd.ms-powerpoint</param> ???????????????<param name="fileUpload.allowedExtensions">.txt,.ppt</param> ???????????</interceptor-ref> ???????????<result>/success.jsp</result> ???????????<!-- 出现错误自动会返回input结果,进入结果视图 --> ???????????<result name="input" >/error.jsp</result> ???????</action> ???</package></struts> ???
 

 附加:contentType类型设置

上传Action类UploadAction-简单的保存文件方式
 
package com.struts;import java.io.File;import java.io.IOException;import org.apache.commons.io.FileUtils;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport { ???private File uploadImage; //得到上传的文件 ???private String uploadImageContentType; //得到文件的类型 ???private String uploadImageFileName; //得到文件的名称 ???????public String execute(){ ???????System.out.println("fileName:"+this.getUploadImageFileName()); ???????System.out.println("contentType:"+this.getUploadImageContentType()); ???????System.out.println("File:"+this.getUploadImage()); ???????????????//获取要保存文件夹的物理路径(绝对路径) ???????String realPath=ServletActionContext.getServletContext().getRealPath("/upload"); ???????File file = new File(realPath); ???????????????//测试此抽象路径名表示的文件或目录是否存在。若不存在,创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 ???????if(!file.exists())file.mkdirs(); ???????????????try { ???????????//保存文件 ???????????FileUtils.copyFile(uploadImage, new File(file,uploadImageFileName)); ???????} catch (IOException e) { ???????????e.printStackTrace(); ???????} ???????return SUCCESS; ???} ???public File getUploadImage() { ???????return uploadImage; ???} ???public void setUploadImage(File uploadImage) { ???????this.uploadImage = uploadImage; ???} ???public String getUploadImageContentType() { ???????return uploadImageContentType; ???} ???public void setUploadImageContentType(String uploadImageContentType) { ???????this.uploadImageContentType = uploadImageContentType; ???} ???public String getUploadImageFileName() { ???????return uploadImageFileName; ???} ???public void setUploadImageFileName(String uploadImageFileName) { ???????this.uploadImageFileName = uploadImageFileName; ???} ???}
 

上传成功页面:

 ?<body> ???????成功页面. <br> ?</body>

上传失败页面:

 
<!-- 引入struts2的标签库 --><%@ taglib uri="/struts-tags" prefix="s"%> ?<body> ???????跳转错误页面。。<br> ???????<!-- fielderror标签输出action的fieldErrors属性保存的字段错误,fieldErrors是一个map类型的属性。 --> ???????<s:fielderror /> ???????<!-- 生产一个查看debug信息的链接 --> ???????<s:debug /> ?</body>

struts2文件上传

原文地址:https://www.cnblogs.com/feifeicui/p/8733242.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved