当前位置:网站首页>File upload and download demo
File upload and download demo
2022-07-24 07:14:00 【SJMP1974】
Reference tutorial : The latest version of Silicon Valley JavaWeb A full set of tutorial ,java web Zero foundation entry full edition P213
One 、 Upload files
1.1 introduce jar package :
- commons-fileupload-1.2.1.jar
- commons-io-1.4.jar
1.2 Programming
package com.atguigu.servlet;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.List;
/** * @author: sjmp1573 * @date: 2022/7/23 14:30 * @description: */
public class UploadServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1. Judge whether the uploaded data is multi segment data , Only multi segment data is file upload .
if (ServletFileUpload.isMultipartContent(req)) {
// 2. establish FileItemFactory Factory implementation class , And create ServletFileUpload Easy to parse data and other operations .
FileItemFactory fileItemFactory = new DiskFileItemFactory();
ServletFileUpload fileUpload = new ServletFileUpload(fileItemFactory);
try {
// 3. Resolve request , get FileItem list
List<FileItem> list = fileUpload.parseRequest(req);
// 4. Traverse FileItem , Output data , Check whether the file is successful
for (FileItem fileItem :list) {
if (fileItem.isFormField()){
// Common form items
System.out.println(fileItem.getFieldName());
System.out.println(fileItem.getString("UTF-8"));
}else{
// Uploaded file data , Write to disk
fileItem.write(new File("E:\\"+fileItem.getName()));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Remember in web.xml Middle configuration servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
<servlet>
<servlet-name>UploadServlet</servlet-name>
<servlet-class>com.atguigu.servlet.UploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadServlet</servlet-name>
<url-pattern>/uploadServlet</url-pattern>
</servlet-mapping>
</web-app>
Two 、 File download
Put the downloaded file under the project path file Under the table of contents :

Write file download program :
package com.atguigu.servlet;
import org.apache.commons.io.IOUtils;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
/** * @author: sjmp1573 * @date: 2022/7/23 15:44 * @description: */
@WebServlet(name = "DownloadServlet", value = "/downloadServlet")
public class DownloadServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("hello");
// 1. Get downloaded files , In a streaming way
String fileName = "d.jpg";
ServletContext servletContext = getServletContext();
InputStream resourceAsStream = servletContext.getResourceAsStream("/file/" + fileName);
// 3. Set the returned data type
String mimeType = servletContext.getMimeType("/file/" + fileName);
resp.setContentType(mimeType);
// 4. Set the response header , Process content as a download
resp.setHeader("Content-Disposition", "attachment;" + "filename=" + fileName);
// 2. Get the output stream of the response
ServletOutputStream outputStream = resp.getOutputStream();
IOUtils.copy(resourceAsStream, outputStream);
}
}
边栏推荐
- 一日一书:机器学习及实践——从零开始通往kaggle竞赛之路
- C language start
- Vs debugging
- JMeter笔记2 | JMeter原理及测试计划要素
- Chinese manufacturers may catch up with the humanoid robot Optimus "Optimus Prime", which has been highly hyped by musk
- (笔记整理未完成)【图论:求单源最短路径】
- Blockbuster live broadcast | orb-slam3 series code explanation map points (topic 2)
- 上传excel文件
- Redis sentinel mechanism
- Pytorch deep learning practice lesson 10 / assignment (basic CNN)
猜你喜欢

文件上传下载Demo
![[USB voltmeter and ammeter] Based on stm32f103c8t6 for Arduino](/img/5f/40e4e144a628ef1aa38ab536b40366.png)
[USB voltmeter and ammeter] Based on stm32f103c8t6 for Arduino

In the era of e-commerce, what should enterprises do in the transformation of social e-commerce?

Redis fragment cluster

AMD64(x86_64)架构abi文档:上

tensorflow scatter_ Nd function

周杰伦直播超654万人观看,总互动量破4.5亿,助力快手再破纪录

聚合型新生态模式-分享购,会员及奖励制度

cookie_session

电子商务时代,企业社交电商转型要做什么?
随机推荐
Part II - C language improvement_ 4. Secondary pointer
Ue4/5 cannot open the file "xxx.generated.h" (cannot open file xxx.generated.h) solution summary
GDB debug core/dump
Traditional e-commerce dividends disappear, how to enter the new social e-commerce?
[leetcode] 444. Sequence reconstruction
定制 or 通用,中国 SaaS 未来发展趋势是什么?
【时序逻辑电路】——寄存器
Neo4j modify tag name
一个怎样的模式能让平台用户发生自助裂变?-链动2+1
[essays: discretization]
MySQL automatic generation creation time and update time
第二部分—C语言提高篇_3. 指针强化
【LeetCode】444. 序列重建
Use the root user to create a new user and set the password for
Redis fragment cluster
Tensorflow Einstein function
Upload pictures Base64
解压主播狂揽4000w+播放,快手美食赛道又添新风向?
STM32 external interrupt (register version)
单场GMV翻了100倍,冷门品牌崛起背后的“通用法则”是什么?