JavaWeb—文件的上传和下载
2021-06-09 12:03
标签:sub override param BMI https null win 浏览器 图片 (1)超链接实现下载 这里的文件是自己添加在包里的: (2)后台实现下载 JavaWeb—文件的上传和下载 标签:sub override param BMI https null win 浏览器 图片 原文地址:https://www.cnblogs.com/mylovertomylove/p/14488530.html文件的上传
DOCTYPE html>
html lang="en">
head>
meta charset="UTF-8">
title>表单上传title>
head>
body>
form method="post" enctype="multipart/form-data" action="uploadServlet">
姓名:input type="text" name="uname"> br>
文件:input type="file" name="myfile"> br>
button type="submit">提交button>
form>
body>
html>
@WebServlet("/uploadServlet")
@MultipartConfig//如果是文件上传一定要加这个注解
public class UploadServlet extends HttpServlet {
/**
* 文件上传.....
* uname: 张三
* 上传的文件名: 徐裴_简历.docx
* 文件存放的路径:D:\IdeaProjects\demo02\out\artifacts\demo02_war_exploded */
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("文件上传.....");
//设置请求的编码格式
request.setCharacterEncoding("UTF-8");
//获取普通的表单项(获取参数)
String uname = request.getParameter("uname");
System.out.println("uname: " + uname);
//获取Part对象 Servlet将multipart/form-data的POST封装成Part对象
Part part = request.getPart("myfile");//表单中文件域值
//通过Part对象得到上传的文件名
String fileName = part.getSubmittedFileName();
System.out.println("上传的文件名: " + fileName);
String filePath = request.getServletContext().getRealPath("/");
System.out.println("文件存放的路径:" + filePath);
//上传文件到指定的路径
part.write(filePath + "/" + fileName);
}
}
文件的下载
DOCTYPE html>
html lang="en">
head>
meta charset="UTF-8">
title>文件下载title>
head>
body>
a href="download/1.txt" >文本文件a>
a href="download/1.png">图片文件a>
a href="download/apache-tomcat-8.5.63-windows-x64.zip">压缩文件a>
hr>
a href="download/1.txt" download>文本文件a>
a href="download/1.png" download="考研必刷题">图片文件a>
body>
html>
form action="downloadServlet">
文件名:input type="text" name="fileName" placeholder="请输入要下载的文件名">
button>下载button>
form>
@WebServlet("/downloadServlet")
public class DownloadServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("文件下载...");
//设置请求的编码
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
//获取参数(得到想要下载的文件名)
String fileName = request.getParameter("fileName");
//参数的非空判断 fileName.trim()去除字符串的前后空格
if(fileName == null || "".equals(fileName.trim())) {
response.getWriter().write("请输入想要下载的文件名!");
response.getWriter().close();
return;
}
//得到图片存放的路径
String path = request.getServletContext().getRealPath("/download/");
//通过路径得到file对象
File file = new File(path + fileName);
//判断文件是否存在和是否为一个标准文件
if(file.exists() && file.isFile()) {
//文件下载的方法
//设置响应类型
response.setContentType("application/x-msdownload");
//设置响应头
response.setHeader("Content-Disposition","attachment;filename=" + fileName);
//得到输入流
InputStream in = new FileInputStream(file);
//得到输出流
ServletOutputStream out = response.getOutputStream();
//定义byte数组
byte[] bytes = new byte[1024];
//定义长度
int len = 0;
//循环输出
while((len = in.read(bytes)) != -1) {
//输出
out.write(bytes, 0, len);
}
//关闭资源
out.close();
in.close();
} else {
response.getWriter().write("文件不存在,请重试!");
response.getWriter().close();
}
}
}
上一篇:java 项目源码大全 主流框架
下一篇:Java容器集合经典面试题集