坠落凡间的struts2(6)---文件的上传下载
来源:互联网 发布:vb.net 鼠标穿透控件 编辑:程序博客网 时间:2024/04/27 14:50
Servlet基于IO流的文件上传
我们直接可以使用servlet的io来传送文件,但是我们得到流需要解析,得到对应的文件信息,名字类型,内容等,需要手动的解析
jsp页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!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=UTF-8"><title>Insert title here</title></head><body><form action="/UFile" method="post" enctype="multipart/form-data"> 名字:<input type="text" name="username"> 文件:<input type="file" name="file"> <input type="submit" value="提交"></form></body></html>servlet代码:
package org.senssic.servlet;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class UFile */public class UFile extends HttpServlet {private static final long serialVersionUID = 1L;/** * @see HttpServlet#HttpServlet() */public UFile() {super();// TODO Auto-generated constructor stub}/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */@Overrideprotected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */@Overrideprotected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {InputStream iStream = request.getInputStream();BufferedReader bReader = new BufferedReader(new InputStreamReader(iStream));String string = "";while ((string = bReader.readLine()) != null) {System.out.println(string);}}}
然后根基流信息解析文件啦
基于组件的上传下载
fileupload组件struts中带的有这个jar包
package org.senssic.servlet;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.Date;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;/** * Servlet implementation class UFile */public class UFile extends HttpServlet {private static final long serialVersionUID = 1L;/** * @see HttpServlet#HttpServlet() */public UFile() {super();// TODO Auto-generated constructor stub}/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */@Overrideprotected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {DiskFileItemFactory factory = new DiskFileItemFactory();String FileTemp = this.getServletContext().getRealPath("uploadFile/temp");factory.setRepository(new File(FileTemp));ServletFileUpload upload = new ServletFileUpload(factory);upload.setSizeMax(1000000);try {List<FileItem> items = upload.parseRequest(request);for (FileItem item : items) {if (item.isFormField()) {System.out.println(item.getFieldName() + ":"+ item.getString());} else {System.out.println(item.getFieldName());System.out.println(item.getName());FileOutputStream oStream = new FileOutputStream(new File(this.getServletContext().getRealPath("/")+ "upload" + File.separator + new Date()+ "." + item.getName().split("\\.")[1]));if (item.isInMemory()) {oStream.write(item.get());} else {InputStream iStream = request.getInputStream();byte[] byt = new byte[1024];while (iStream.read(byt) > 0) {oStream.write(byt);iStream.close();oStream.close();}}}}} catch (FileUploadException e) {e.printStackTrace();}}}
jsp文件:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!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=UTF-8"><title>Insert title here</title></head><body><form action="/UFile" method="post" enctype="multipart/form-data"> 名字:<input type="text" name="username"> 文件:<input type="file" name="file"> <input type="submit" value="提交"></form></body></html>
JSPSmart组件
jar包下载地址:http://ishare.iask.sina.com.cn/f/62325339.html
package org.senssic.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.lxh.smart.SmartUpload;import org.lxh.smart.SmartUploadException;/** * Servlet implementation class UFile */public class UFile extends HttpServlet {private static final long serialVersionUID = 1L;/** * @see HttpServlet#HttpServlet() */public UFile() {super();// TODO Auto-generated constructor stub}/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */@Overrideprotected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {SmartUpload upload = new SmartUpload();upload.initialize(this.getServletConfig(), request, response);upload.setContentDisposition(null);try {upload.upload();} catch (Exception e) {// TODO: handle exception}String form = upload.getRequest().getParameter("from");String to = upload.getRequest().getParameter("to");String subject = upload.getRequest().getParameter("subject");String content = upload.getRequest().getParameter("content");for (int i = 0; i < upload.getFiles().getCount(); i++) {org.lxh.smart.File file = upload.getFiles().getFile(i);if (!file.isMissing()) {try {file.saveAs(request.getRealPath("/") + "fileupload/temp/"+ file.getFieldName());} catch (SmartUploadException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}
Struts2的文件上传、下载
单文件上传action:
package org.senssic.action;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import com.opensymphony.xwork2.ActionSupport;public class FileUpload extends ActionSupport {private File file;//应与表单上的一致private String fileContentType;//与前面的名字一致即filexxx,且ContentType为固定名称不能更改private String fileFileName;//与前面的名字一致即filexxx,且fileName为固定名称不能更改private String savePaht;private String name;public File getFile() {return file;}public void setFile(File file) {this.file = file;}public String getSavePaht() {return savePaht;}public void setSavePaht(String savePaht) {this.savePaht = savePaht;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String execute() {System.out.println(fileContentType);try {FileInputStream in = new FileInputStream(file);FileOutputStream oStream = new FileOutputStream("d:/"+ fileFileName);byte[] byt = new byte[1024];while (in.read(byt) > 0) {oStream.write(byt);}in.close();oStream.close();} catch (Exception e) {// TODO: handle exception}return SUCCESS;}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;}}
struts配置:
<constant name="struts.multipart.saveDir" value="d:/temp"></constant>
<action name="fileupload" class="org.senssic.action.FileUpload"> <param name="savePaht">/WEB-INF/upload</param> <result>/index.jsp</result> </action>
jsp文件:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!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=UTF-8"><title>Insert title here</title></head><body><form action="fileupload" method="post" enctype="multipart/form-data"> 名字:<input type="text" name="name"> file:<input type="file" name="file"> <input type="submit" value="提交"></form></body></html>
可以通过系统拦截器控制文件的上传fileUpload系统拦截器,通过设置
allowedExtensionsSet,maximumSize,allowedTypesSet参数设置拦截文件的属性
多文件上传
只需要将action中的处理变成多个文件的处理就行了
package org.senssic.action;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import com.opensymphony.xwork2.ActionSupport;public class FileUpload extends ActionSupport {private File[] file;private String[] fileContentType;private String[] fileFileName;private String savePaht;private String name;public File[] getFile() {return file;}public void setFile(File[] file) {this.file = file;}public String[] getFileContentType() {return fileContentType;}public void setFileContentType(String[] fileContentType) {this.fileContentType = fileContentType;}public String[] getFileFileName() {return fileFileName;}public void setFileFileName(String[] fileFileName) {this.fileFileName = fileFileName;}public String getSavePaht() {return savePaht;}public void setSavePaht(String savePaht) {this.savePaht = savePaht;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String execute() {System.out.println(fileContentType);for (int i = 0; i < file.length; i++) {try {FileInputStream in = new FileInputStream(file[i]);FileOutputStream oStream = new FileOutputStream("d:/"+ fileFileName[i]);byte[] byt = new byte[1024];while (in.read(byt) > 0) {oStream.write(byt);}in.close();oStream.close();} catch (Exception e) {// TODO: handle exception}}return SUCCESS;}}
文件下载
action代码:
package org.senssic.action;import java.io.InputStream;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class downFile extends ActionSupport {private String downFileName;public InputStream getFileDown() {return ServletActionContext.getServletContext().getResourceAsStream("/WEB-INF/1.txt");}public String downLoad() {return SUCCESS;}public String getDownFileName() {return downFileName;}public void setDownFileName(String downFileName) {this.downFileName = downFileName;}}配置:
<action name="downfile" class="org.senssic.action.downFile" method="downLoad"> <result type="stream"> <param name="inputName">fileDown</param> <param name="contentDisposition">attachment;filename=${downFileName}</param> </result> </action>
注:
1、方法名与参数inputName必须匹配,即fileDown必须与得到输入流方法getFileDown对应
2、配置contentDisposiotion参数,即下载显示的文件名字类型
3、其他参数可查看stream类型说明
- 坠落凡间的struts2(6)---文件的上传下载
- 坠落凡间的struts2(2)---struts2的文件配置
- 坠落凡间的struts2(5)---拦截器
- 坠落凡间的struts2(1)---struts2的配置与安装
- 坠落凡间的struts2(3)---struts2的类型转换
- 坠落凡间的struts2(7)---struts2的国际化
- 坠落凡间的struts2(8)---struts2的标签
- 坠落凡间的struts2(9)---struts2和struts1区分
- 坠落凡间的struts2(4)---数据的校验
- 白羊座,一个坠落于凡间的精灵
- struts2的文件上传下载
- struts2实现文件的上传下载
- 基于struts2的文件上传下载
- struts2的开发(文件上传下载)
- 文件的上传下载---struts2学习笔记
- struts2 下进行文件的上传下载
- struts2开发文件上传下载的简单实例
- Struts2图片的上传下载
- linux内核-信号
- Hdu4767 Bell (贝尔数 中国剩余定理 构造矩阵)
- Unity3D--day03
- c/c++(一) 一种我个人不太长见的C++函数名指针化写法
- JavaScript入门
- 坠落凡间的struts2(6)---文件的上传下载
- 使IRB语法高亮方法的办法
- zip, tar, tar.gz, tar.bz2, jar,7z等格式文件的压缩和解压方法
- JAVA泛型类和泛型方法
- 500 OOPS: cannot change directory:/root 问题
- 构造函数为什么不能为虚函数
- sdutoj 1129 电路稳定性
- Javascript杂记
- Java运算符与表达式