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.
随机推荐
- 算法:QQ等级换算成皇冠太阳星星月亮
/// <summary> /// 等级换算成图标分布 /// 以QQ的形式计算 /// 2^(2*0) /1 /// 2^(2*1) /4 /// 2^(2*2) /16 ...
- Tomcat配置JVM参数步骤
这里向大家描述一下如何使用Tomcat配置JVM参数,Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个java虚拟机.您可以选择自己的需要选择不同的操作系统和对应的JDK ...
- thinkphp3.2 success方法注意
success方法的url一定要用U()方法来生成, $this->success('修改成功',U('showlist'),3);
- .net开发环境搭建
本地开发环境下载网址:https://msdn.itellyou.cn/,选择个人免费版本 下载工具 下载安装win7系统选择asp.net 和web开发,右侧可选全部选择,大约11GB左右
- FFmpeg实现将图片转换为视频
##名称:ffmpeg实现将图片转换为视频 ##平台:ubuntu(已经安装好了ffmpeg工具) ##日期:2017年12月10日 简介: 因为学习需要,需要将连续图片转换成视频,昨天和今天早上用o ...
- 例如android:layout_marginBottom的值为负数
为什么有时候像android:layout_marginBottom等变量的赋值为负数? 例如如下代码: <?xml version="1.0" encoding=" ...
- RadioGroup实现类似ios的分段选择(UISegmentedControl)控件
在ios7中有一种扁平风格的控件叫做分段选择控件UISegmentedControl,控件分为一排,横放着几个被简单线条隔开的按钮,每次点击只能选择其中一个按钮,他类似于tabbar但是又稍微有点区别 ...
- onInterceptTouchEvent与onTouchEvent默认返回值
其中Layout里的onInterceptTouchEvent默认返回值是false,这样touch事件会传递到View控件,Layout里的onTouch默认返回值是false, View里的onT ...
- maven属性、profile、资源过滤、不同环境构建项目
maven针对不同环境构建项目 maven使用属性.profile及资源过滤支持针对不同环境构建项目 maven属性 maven共有六类属性 1.最常见的是自定义属性,即在pom文件里通过<pr ...
- phantomjs在centos7下的安装
http://phantomjs.org/download.html 下载 Linux 64-bit 解压 tar jxvf 安装包名称.tar.bz2 pwd 查看路径 ln -sf phantom ...