struts2中的文件上传和下载
天下大事,必做于细。天下难事,必作于易。
以前见过某些人,基础的知识还不扎实就去学习更难的事,这样必定在学习新的知识会非常迷惑结果
再回来又一次学习一下没有搞懂的知识,这必定会导致学习效率的下降!我写的这篇上传和下载都非常基础。
十分适合刚開始学习的人!
jsp:页面
<!--在进行文件上传时,表单提交方式一定要是post的方式,由于文件上传时二进制文件可能会非常大,还有就是enctype属性。这个属性一定要写成multipart/form-data,
不然就会以二进制文本上传到server端-->
<form action="fileUpload.action" method="post" enctype="multipart/form-data">
file: <input type="file" name="file"><br>
<input type="submit" value="submit">
</form>
上传action
public class FileUploadAction extends ActionSupport
{
private String username;
//注意,file并非指前端jsp上传过来的文件本身,而是文件上传过来存放在暂时文件夹以下的文件
private File file;
//提交过来的file的名字
private String fileFileName;//必须是input中name值+FileName固定格式
//提交过来的file的MIME类型
private String fileContentType;//
public File getFile()
{
return file;
}
public void setFile(File file)
{
this.file = file;
}
public String getFileFileName()
{
return fileFileName;
}
public void setFileFileName(String fileFileName)
{
this.fileFileName = fileFileName;
}
public String getFileContentType()
{
return fileContentType;
}
public void setFileContentType(String fileContentType)
{
this.fileContentType = fileContentType;
}
@Override
public String execute() throws Exception
{
String root = ServletActionContext.getServletContext().getRealPath("/upload");//上传的文件的位置
InputStream is = new FileInputStream(file);//基于file创建一个文件输入流
OutputStream os = new FileOutputStream(new File(root, fileFileName));//创建输出流
System.out.println("fileFileName: " + fileFileName);
// 由于file是存放在暂时文件夹的文件,我们能够将其文件名称和文件路径打印出来,看和之前的fileFileName是否同样
System.out.println("file: " + file.getName());
System.out.println("file: " + file.getPath());
byte[] buffer = new byte[1024];
int length = 0;
while(-1 != (length = is.read(buffer, 0, buffer.length)))//经典写入操作
{
os.write(buffer);
}
os.close();
is.close();
return SUCCESS;
}
}
这样就成功的将文件上传了,然后你就去看project中上传的文件夹中有没有你的文件非常遗憾没有,原因是它上传到tomcat/webappsproject中upload的文件夹中了.
下载
jsp页面
下载:
<a href="downloadAction?
fileName=JAVA.doc">下载</a>
DownloadAction:
package com.iss.action;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class DownLoad extends ActionSupport {
private String fileName;//要下载的文件名称
private String directory;//要下载的文件文件夹
public void setDirectory(String directory) {
this.directory = directory;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public InputStream getInputStream() throws FileNotFoundException {
String dir = directory + fileName;
System.out.println(dir);//输出的文件要下载的路径
// return ServletActionContext.getServletContext().getResourceAsStream(
// "/" +dir);//使用相对路径下载文件内容默认是和webRoot同一文件夹
return new FileInputStream(dir);//使用全局路径下载
}
@Override
public String execute() throws Exception {
System.out.println("fileName:" + fileName);
return SUCCESS;
}
}
struts.xml中的配置
<!--下载action -->
<action name="downloadAction" class="com.iss.action.DownLoad">
<!-- <param name="directory">/images/</param> -->下载路径为相对路径
<param name="directory">E:/wang/head/</param>下载路径为绝对路径
<result type="stream">//类型是stream类型注意
<!--指定下载文件内容的类型 -->
<param name="contentType">plain/text</param>
<!--inputName默认值inputStream -->
<!--默认值是inputStream指定文件的源头,依据这个配置,找getInputStream方法获得文件流-->
<param name="inputName">inputStream</param>
<!--动态文件获取 -->
<param name="contentDisposition">attachement;fileName="${fileName}"</param>
<!-- 指定下载文件的缓冲大小 -->
<param name="bufferSize">50000000</param>
</result>
<result name="input">error.jsp</result>
</action>
至此简单的文件读写已经完毕!
由于水平有限,还望指教。
struts2中的文件上传和下载的更多相关文章
- 4.struts2中的文件上传,下载
Struts2中文件的上传下载,是借用commons里面的包实现文件的上传,需要导入两个jar commons-fileupload-1.2.2.jar commons-io-2.0.1.jar 实现 ...
- Struts2 之 实现文件上传和下载
Struts2 之 实现文件上传和下载 必须要引入的jar commons-fileupload-1.3.1.jar commons-io-2.2.jar 01.文件上传需要分别在struts.xm ...
- javaWeb中,文件上传和下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- JavaWeb中的文件上传和下载功能的实现
导入相关支持jar包:commons-fileupload.jar,commons-io.jar 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上 ...
- struts2中的文件上传,文件下载
文件上传: Servlet中的文件上传回顾 前台页面 1.提交方式post 2.表单类型 multipart/form-data 3.input type=file 表单输入项 后台 apache提交 ...
- Struts2学习总结——文件上传与下载
Struts2文件上传与下载 1.1.1新建一个Maven项目(demo02) 在此添加Web构面以及 struts2 构面 1.2.1配置Maven依赖(pom.xml 文件) <?xml v ...
- Java中的文件上传和下载
文件上传原理: 早期的文件上传机制: 在TCP/IP中.最早出现的文件上传机制是FTP.他是将文件由客户端发送到服务器的标准机制. jsp中的文件上传机制: 在jsp编程中不能使用FTP的方法来上传文 ...
- python web中的文件上传与下载
django 框架下 实现服务端的文件上传与下载: import jsonimport osimport uuid def attachment_upload(request): "&quo ...
- struts2中的文件上传和文件下载
单文件文件上传 1.
随机推荐
- Sqlserver 备份
Transact-SQL 语法规则 Transact-SQL 引用中的语法关系图使用下列规则. 大写 : Transact-SQL 关键字. 斜体 : Transact-S ...
- Oracle11g密码过期处理方法
首先 查询密码有效期: SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIF ...
- 3.C#基础篇-->堆和栈
一.前言 堆与栈对于理解.NET中的内存管理.垃圾回收.错误和异常.调试与日志有很大的帮助.垃圾回收的机制使程序员从复杂的内存管理中解脱出来,虽然绝大多数的C#程序并不需要程序员手动管理内存,但这并不 ...
- layout_weight使用
layout_weight的真正含义是等比例分割剩余空间, 在线性布局(linearlayout)中对宽度和高度进行比例分割, 三个子linearlayout分割父linearlayout高度,代码如 ...
- mac下安装MySQL【转】
转:http://www.jb51.net/article/103841.htm 1.官网下载 MySQL v5.7官方正式版下载地址:http://www.jb51.net/softs/451120 ...
- Storm框架:如何实现crontab定时任务
Storm除了能对消息流进行处理,还能实现crontab定时任务. 只要在bolt中配置TOPOLOGY_TICK_TUPLE_FREQ_SECS项即可实现. @Override public Map ...
- 分布式理论基础(一)一致性及解决一致性的两种方式:2PC和3PC (转载 不错)
分布式理论基础(一)一致性及解决一致性的两种方式:2PC和3PC 1 一致性 1.1 简述 一致性,是指对每个节点一个数据的更新,整个集群都知道更新,并且是一致的 假设一个具有N个节点的分布式系统,当 ...
- LeetCode SQL:Employees Earning More Than Their Managers
# Write your MySQL query statement below SELECT a.Name FROM Employee AS a INNER JOIN Employee AS b O ...
- 搭建Kafka开发环境
Kafka版本是:kafka_2.10-0.8.2.1 1.maven工程方式 在pom.xml中配置kafka依赖 1 2 3 4 5 <dependency> <grou ...
- Mouse For Winpad
Mouse For Winpad 用WIN10的平板模式玩游戏总会到一些兼容性问题,之前在推Re:LieF的时候就遇到了触屏不能像鼠标指针一样进行游戏,于是猜想一定是程序没进行标准化MFC的编程.于是 ...