一丶先引入上传下载的lib
二丶上传的的servlet
package com.test.action;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.ServletException;
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.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
@WebServlet("/upload")
public class FileUpLoadAction extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 设置编码
request.setCharacterEncoding("utf-8");
//对提交的数据进行处理,保存上传文件
boolean success = processUpload(request);
if(success){
//获取表单text控件的值
String account = request.getAttribute("account").toString();
System.out.println(account);
//获取文件上传的原始名称
String fileName = request.getAttribute("upfile").toString();
System.out.println(fileName);
//获取文件上传后,服务器上保存的名字
String fileNameServer = request.getAttribute("upfileServer").toString();
System.out.println(fileNameServer);
request.setAttribute("upfile", fileNameServer);
request.setAttribute("message", "上传成功");
}
request.getRequestDispatcher("/upload.jsp").forward(request, response);
}
private boolean processUpload(HttpServletRequest request) {
boolean success = true;
String message = null;
// 获取文件需要上传到的路径
String path = request.getServletContext().getRealPath("/upload");
System.out.println(path);
// 如果此文件夹不存在,则构造此文件夹
File f = new File(path);
if (!f.exists()) {
f.mkdir();
}
// 构造出文件工厂,用于存放JSP页面中传递过来的文件
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置上传文件的保存路径
factory.setRepository(f);
// 设置缓存大小,如果文件大于缓存大小时,则先把文件放到缓存中
factory.setSizeThreshold(1 * 1024 * 1024);
ServletFileUpload upload = new ServletFileUpload(factory);
// 设置可以上传文件大小的上界20MB
upload.setSizeMax(20 * 1024 * 1024);
try {
// 可以上传多个文件
List<FileItem> list = (List<FileItem>) upload.parseRequest(request);
for (FileItem item : list) {
// 获取表单的属性名字
String name = item.getFieldName();
if (item.isFormField()) {
String value = item.getString();
//解决乱码问题
value = new String(value.getBytes("iso-8859-1"),"utf-8");
request.setAttribute(name, value);
} else {
// 获得文件类型
String contentType = item.getContentType();
// 获得文件大小
long fileSize = item.getSize();
// 获取路径名
String value = item.getName();
// 索引到最后一个反斜杠
int start = value.lastIndexOf("\\");
// 截取 上传文件的 字符串名字,加1是 去掉反斜杠,
String filename = value.substring(start + 1);
if (filename != null && !filename.trim().equals("")) {
// 如果上传的文件不是图片,那么不上传
String allImgExt = ".jpg|.jpeg|.gif|.bmp|.png|";
String extName = filename.substring(filename.indexOf("."), filename.length());
if (allImgExt.indexOf(extName + "|") == -1) {
message = "该文件类型不允许上传。请上传 " + allImgExt
+ " 类型的文件,当前文件类型为" + extName;
success = false;
break;
}
request.setAttribute(name, filename);
// 随机数产生名称
String newName = System.currentTimeMillis() + extName;
request.setAttribute(name + "Server", newName);
// 将文件保存到服务器中
InputStream in = item.getInputStream();
// 原文件名
// OutputStream out = new FileOutputStream(new File(path, filename));
// 随机数文件名
OutputStream out = new FileOutputStream(new File(path,
newName));
int length = 0;
byte[] buf = new byte[1024];
while ((length = in.read(buf)) != -1) {
out.write(buf, 0, length);
}
in.close();
out.close();
}
}
}
} catch (FileUploadException e) {
message = "文件的内容过大,请上传小于20MB的文件" ;
success = false;
e.printStackTrace();
} catch (IOException e) {
success = false;
e.printStackTrace();
}
request.setAttribute("message", message);
return success;
}
}
三丶下载的servlet
package com.test.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/download")
public class FileDownloadAction extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
// 根据主键读取文件的真实名字 + 服务器上的名字
processDownload("1444442288605.png", "腾讯.png", request, response);
}
private boolean processDownload(String fileName, String saveName,
HttpServletRequest request, HttpServletResponse response) {
boolean success = true;
// 获取文件下载所在的路径
String path = request.getServletContext().getRealPath("/upload");
File fileLoad = new File(path, fileName); // 下载文件
long fileLength = fileLoad.length(); // 文件大小
byte[] buffer = new byte[1024]; // 缓冲字节数组
try {
response.reset();
response.setHeader("Content-disposition", "attachment;filename=\""
+ new String(saveName.getBytes("gb2312"), "ISO-8859-1") + "\"");
response.setContentType("application/octet-stream");
response.setHeader("Content_Length", String.valueOf(fileLength));
OutputStream os = response.getOutputStream();
FileInputStream in = new FileInputStream(fileLoad);
int hasRead = 0;
while ((hasRead = in.read(buffer)) != -1) {
os.write(buffer, 0, hasRead);
}
os.flush();
os.close();
in.close();
} catch (IOException e) {
success = false;
e.printStackTrace();
}
return success;
}
}
以上所述是小编给大家介绍的JavaWeb中上传和下载文件实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# javaweb上传下载文件
# JavaWeb实现文件的上传与下载
# javaweb实现文件上传与下载功能
# JavaWeb 文件的上传和下载功能简单实现代码
# JavaWeb实现文件上传下载功能实例详解
# Javaweb实现上传下载文件的多种方法
# Java Web实现文件上传和下载接口功能详解
# 上传
# 随机数
# 上传文件
# 表单
# 小编
# 文件上传
# 器上
# 多个
# 在此
# 腾讯
# 给大家
# 不存在
# 先把
# 过大
# 所述
# 该文件
# 给我留言
# 感谢大家
# 主键
# 疑问请
相关文章:
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
如何高效利用200m空间完成建站?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
如何用西部建站助手快速创建专业网站?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
建站之星会员如何解锁更多建站功能?
如何快速生成ASP一键建站模板并优化安全性?
常州企业建站如何选择最佳模板?
家庭服务器如何搭建个人网站?
如何快速建站并高效导出源代码?
如何在七牛云存储上搭建网站并设置自定义域名?
韩国服务器如何优化跨境访问实现高效连接?
制作证书网站有哪些,全国城建培训中心证书查询官网?
建站之星展会模板:智能建站与自助搭建高效解决方案
linux top下的 minerd 木马清除方法
如何挑选高效建站主机与优质域名?
如何选择高效便捷的WAP商城建站系统?
建站之星如何保障用户数据免受黑客入侵?
高端建站三要素:定制模板、企业官网与响应式设计优化
北京专业网站制作设计师招聘,北京白云观官方网站?
个人摄影网站制作流程,摄影爱好者都去什么网站?
建站与域名管理如何高效结合?
如何选择靠谱的建站公司加盟品牌?
建站之星价格显示格式升级,你的预算足够吗?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
开心动漫网站制作软件下载,十分开心动画为何停播?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
教学论文网站制作软件有哪些,写论文用什么软件
?
建站VPS配置与SEO优化指南:关键词排名提升策略
微信小程序 五星评分(包括半颗星评分)实例代码
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
为什么Go需要go mod文件_Go go mod文件作用说明
建站之星CMS建站配置指南:模板选择与SEO优化技巧
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
如何获取上海专业网站定制建站电话?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
建站之星ASP如何实现CMS高效搭建与安全管理?
网站代码制作软件有哪些,如何生成自己网站的代码?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
如何在阿里云高效完成企业建站全流程?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
学校建站服务器如何选型才能满足性能需求?
宝塔面板创建网站无法访问?如何快速排查修复?
如何通过VPS建站无需域名直接访问?
小程序网站制作需要准备什么资料,如何制作小程序?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
如何通过FTP服务器快速搭建网站?
如何选择网络建站服务器?高效建站必看指南
*请认真填写需求信息,我们会在24小时内与您取得联系。