JavaEE上传和下载
来源:互联网 发布:淘宝冷光美白仪有用么 编辑:程序博客网 时间:2024/06/05 10:46
先导jar包
上传:
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
@WebServlet(value="/upload",initParams={@WebInitParam(name="path",value="/upload")})
public class UpLoadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private String path;
@Override
public void init() throws ServletException {
//在web.xml中把path值传过来或者使用注解 例如:
/*
* <init-param>
* <param-name>path</param-name>
* <param-value>/upload</param-value>
* </init-param>
*
*/
path = getServletConfig().getInitParameter("path");
}
@SuppressWarnings("unchecked")
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
//页面表单中设置了enctype="multipart/form-data"后
//无法直接通过getParameter方法获取普通组件的参数值
System.out.println("getParameter username = "+username);
//获得上传目录的绝对路径
String realpath = getServletContext().getRealPath(path);
try {
//构造一个文件上传处理对象
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upLoad = new ServletFileUpload(factory);
//获得表单中提交内容
List<FileItem> list = upLoad.parseRequest(request);
for (FileItem fileItem : list) {
//fileItem.isFormField()返回true表示是普通的表单组件
//fileItem.isFormField()返回false表示是上传输入框
if (fileItem.isFormField()) {
//getFieldName()方法获得普通表单组件的参数名
String FieldName = fileItem.getFieldName();
//获得该参数所对应的值并指定编码
String Content = fileItem.getString("UTF-8");
//为了后面可以把普通参数从request中拿出来
request.setAttribute(FieldName, Content);
} else {
//getName()取得上传文件的名字
String fileName = fileItem.getName();
//避免文件名字重复
fileName = System.currentTimeMillis()+fileName;
File file = new File(realpath, fileName);
//把上传文件进行指定目录
fileItem.write(file);
}
}
//因为上面解析request中是数据后,把普通表单组件中的key和value放到了request中,所以这里可以拿出来
System.out.println("request.getAttribute(\"username\") = "+request.getAttribute("username"));
} catch (Exception e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
下载:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(value="/download",initParams={@WebInitParam(name="path",value="/download")})
public class DownLoadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private String path;
@Override
public void init() throws ServletException {
//在web.xml中把path值传过来或者使用注解 例如:
/*
* <init-param>
* <param-name>path</param-name>
* <param-value>/download</param-value>
* </init-param>
*
*/
path = getServletConfig().getInitParameter("path");
}
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 获得用户需要下载文件的名字
String fileName = request.getParameter("fileName");
// 下载文件所在目录的绝对路径
String realPath = getServletContext().getRealPath(path);
// 响应类型设置为下载:application/x-download
response.setContentType("application/x-download");
// 下载文件时显示文件的保存名称
String fileDisplay = "briup_"+fileName;
// 下载文件名的中文编码转换 因为写回去的时候是字节流
fileDisplay = new String(fileName.getBytes("utf-8"),"ISO-8859-1");
// 设置响应头部信息(http协议中的固定设置方式)
response.addHeader("Content-Disposition", "attachment;filename="+fileDisplay);
try {
ServletOutputStream out = response.getOutputStream();
File file = new File(realPath,fileName);
FileInputStream in = new FileInputStream(file);
byte[] b = new byte[1024];
int len = -1;
while ((len = in.read(b)) != -1) {
out.write(b, 0, len);
}
out.flush();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
//注意下载之后就不能使用request跳转了,因为response已经返回了
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
}
- JavaEE上传和下载
- javaEE(文件上传和下载)
- javaEE jspsmart 实现文件上传和下载
- javaee文件上传和下载操作
- javaEE利用地方实现文件的上传和下载
- (20)JavaEE文件上传与下载
- JavaEE框架——Springmvc入门(注解URL核心类详解、文件上传和下载)、和Spring的整合
- JavaEE--------上传
- javaee学习之路(十二)上传与下载
- JAVAEE struts2的简单文件上传与下载
- 【JavaEE学习笔记】文件上传与下载、监听器、过滤器
- JavaEE——Tomcat下载和启动
- 上传和下载
- ftp 上传和下载
- 文件上传和下载
- 文件上传和下载
- SecureCRT上传和下载.
- 文件上传和下载
- lombok 基础入门
- 【python学习笔记】Python对经纬度处理
- 图像卷积、相关以及在MATLAB中的操作 2016年7月11日 20:34:35, By ChrisZZ 区分卷积和相关 图像处理中常常需要用一个滤波器做空间滤波操作。空间滤波操作有时候也被叫做卷积滤
- Generic Views
- mysql使用like查询使用
- JavaEE上传和下载
- 51nod-1140-矩阵相乘结果的判断
- CAD批量转pdf的教程
- 【反序表+树状数组】Codeforces Round #441(Div.2)D[Sorting the Coins]题解
- 深度学习人工智能/大数据/云计算-书籍整理
- 添加路由
- Python 递归
- webstorm快捷键大全(亲自整理)
- ProtoBuffer消息设计经验