Struts2的上传(基本流程例如以下)



1、Struts2默认採用了apache commons-fileupload



2、Struts2支持三种类型的上传组件



3、须要引入commons-fileupload相关依赖包

* commons-io-1.3.2.jar

* commons-fileupload-1.2.1.jar



4、表单中须要採用POST提交方式,编码类型须要使用:multipart/form-data



5、Struts2的Action

取得文件名->>规则:输入域的名称+固定字符串FileName

取得文件数据->>规则:File 输入域的名称

取得内容类型->>规则:输入域的名称+固定字符串ContentType



6、得到输入流。採用输出流写文件

①.首先导入对应的jar包。然后我们建立一个index.jsp页面。

<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<form action="upload.action" method="post" enctype="multipart/form-data"> 标题:<input type="text" name="title"><br>
文件:<input type="file" name="myFile"><br>
<input type="submit" value="上传">
</form>
</body>
</html>

②然后我们须要一个Action来处理上传,代码例如以下:

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream; import com.opensymphony.xwork2.Action; public class UploadTestAction { private String title; //能够得到上传文件的名称
//规则:输入域的名称+固定字符串FileName
private String myFileFileName; //取得文件数据
//规则:File 输入域的名称
private File myFile; // //取得内容类型
// //规则:输入域的名称+固定字符串ContentType
private String myFileContentType; public String getMyFileFileName() {
return myFileFileName;
} public void setMyFileFileName(String myFileFileName) {
this.myFileFileName = myFileFileName;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} public File getMyFile() {
return myFile;
} public void setMyFile(File myFile) {
this.myFile = myFile;
} public String getMyFileContentType() {
return myFileContentType;
} public void setMyFileContentType(String myFileContentType) {
this.myFileContentType = myFileContentType;
} public String execute() throws Exception {
InputStream is = null;
OutputStream os = null;
try {
is = new BufferedInputStream(
new FileInputStream(myFile));
os = new BufferedOutputStream(
new FileOutputStream("D:\\" + myFileFileName));
byte[] buffer = new byte[1024];
int len = 0;
while ((len = is.read(buffer)) > 0) {
os.write(buffer, 0, len);
}
}finally {
if (is != null) {is.close();}
if (os != null) {os.close();}
}
return Action.SUCCESS;
}
}

③Action写完以后再到struts2的配置文件配置一下代码例如以下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>
<!-- 当struts.xml配置文件发生改动。会立马载入。在生产环境下最好不要配置 -->
<constant name="struts.configuration.xml.reload" value="true"/>  
        <constant name="struts.multipart.saveDir" value="绝对路径"></constant>
<!-- 会提供更加友好的提示信息 -->
<constant name="struts.devMode" value="true"/>
<!-- 须要继承struts-default包,这样就拥有的最主要的功能 -->
<package name="upload-package" extends="struts-default">
<action name="upload" class="com.csu.struts2.UploadTestAction">
<result>/success.jsp</result>
</action>
</package>
</struts>

OK!至此就能够上传文件了。

最新文章

  1. CSS解决未知高度垂直居中
  2. Html.BeginForm
  3. .net后台获取HTML中select元素选中的值
  4. guacamole 0.9.9安装与配置
  5. vector.end() 指向的节点
  6. wpfのpack协议
  7. Analyzing The Papers Behind Facebook&#39;s Computer Vision Approach
  8. 关于Windows常用命令
  9. 制作计算器的代码(C#)
  10. VSIM生成fsdb波形文件(VERILOG)
  11. 漫谈servlet技术
  12. USACO hamming
  13. qscoj 128 喵哈哈村的魔法源泉(2)(模仿快速幂,好题)
  14. Spring使用@Scheduled定时调度
  15. WPF 查找控件的所有子控件
  16. centos7下安装pip以及mysql等软件
  17. Redhat7.4 vim编辑无颜色解决
  18. 《A_Pancers》第二次作业 基于Android系统的音乐播放系统项目开题报告
  19. 在服务器端判断request来自Ajax请求(异步)还是传统请求(同步)
  20. CSS3 Flex布局(项目)

热门文章

  1. ios之AFN
  2. 分享点干货(此this非彼this)this的详细解读
  3. 16. PLUGINS
  4. redis:哨兵集群配置
  5. NLog在asp.net core中的应用
  6. [jzoj5073 GDOI2017第二轮模拟] 影魔
  7. gitlab+jenkins+docker自动构建
  8. mysql免安装版配置使用
  9. 售货员的难题(codevs 2596)
  10. 修改flex chart中Legend的字体样式