Java implementiert Datei-Upload- und Download-Funktionen
准备工作
(视频教程推荐:java课程)
需要导入的jar包
运行截图
文件上传截图
文件下载截图
上传文件代码servlet
@WebServlet(name = "UploadServlet",value = "/upload") @MultipartConfig(maxFileSize = 1024*1024*5,maxRequestSize = 1024*1024*20) //1 添加MultipartConfig注解 public class UploadServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //存放文件的目录 String realPath = request.getServletContext().getRealPath("/WEB-INF/upload"); File dir=new File(realPath); if(!dir.exists()){ dir.mkdirs(); } List<String> allowExts=new ArrayList<String>(); allowExts.add("jpg"); allowExts.add("png"); allowExts.add("gif"); //1乱码 request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); //2使用getParts()获取数据 Collection<Part> parts = request.getParts(); //3遍历 PrintWriter out = response.getWriter(); if(parts!=null&&parts.size()>0){ for (Part part : parts) { //判断表单元素是普通字段,还是文件 String submittedFileName = part.getSubmittedFileName(); if(submittedFileName==null){//普通字段 String name = part.getName(); String value = request.getParameter(name); System.out.println(name+"..."+value); }else{//文件 //判断文件是否为"" if(submittedFileName.equals("")){ continue; } //System.out.println(submittedFileName); //从请求头中获取文件 String dis = part.getHeader("content-disposition"); String filename=dis.substring(dis.lastIndexOf("filename=")+10, dis.length()-1); filename=filename.substring(filename.lastIndexOf("\\")+1); System.out.println(filename); //获取文件名的后缀 String ext=filename.substring(filename.lastIndexOf(".")+1); if(!allowExts.contains(ext)){ out.println(filename+"不符合上传文件类型要求..."); continue; } //把文件保存 //1创建新的文件名 String newFileName = UploadUtils.makeNewFileName(filename); //2创建新的路径 String newPath = UploadUtils.makeNewPath(realPath, filename); part.write(newPath+File.separator+newFileName); //删除part part.delete(); out.println("上传成功:"+filename); } } } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } }
每个属性表示的内容
文件下载代码servlet
@WebServlet(name = "DownLoadServlet",value = "/download") public class DownLoadServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //乱码 request.setCharacterEncoding("utf-8"); //获取文件名 String uuidFilename = request.getParameter("filename");//d578be74fd864ac2a879d77b07f13793_backg.jpg //去掉uuid String filename=uuidFilename.substring(uuidFilename.indexOf("_")+1); //存放文件的根路径 String realPath = request.getServletContext().getRealPath("/WEB-INF/upload"); //获取真正目录 String path = UploadUtils.makeNewPath(realPath, filename); File file=new File(path+ File.separator+uuidFilename); if(file.exists()){ response.setHeader("content-disposition", "attachment;filename="+ URLEncoder.encode(filename, "utf-8")); ServletOutputStream os = response.getOutputStream(); FileInputStream fis=new FileInputStream(file); byte[] buf=new byte[1024*4]; int len=0; while((len=fis.read(buf))!=-1){ os.write(buf,0,len); } }else{ response.setContentType("text/html;charset=utf-8"); response.getWriter().write("文件不存在..."); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } }
每个属性表示的内容
读取下载文件servlet
@WebServlet(name = "ListFileServlet",value = "/listfile") public class ListFileServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1读取可以被下载的文件 String realPath = request.getServletContext().getRealPath("/WEB-INF/upload"); HashMap<String,String> map=new HashMap<>(); UploadUtils.listFile(new File(realPath),map); //2放入域中 request.setAttribute("map", map); //3转发 request.getRequestDispatcher("/list.jsp").forward(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } }
工具类servlet
public class UploadUtils { public static void main(String[] args) { String s = makeNewFileName("aaa.jpg"); System.out.println(s); } /** * 根据原始文件名产生一个新的文件名 * @param filename * @return */ public static String makeNewFileName(String filename){ //UUID 统一唯一标识码 String uuid = UUID.randomUUID().toString().replace("-", "");//默认32位的16进制 return uuid+"_"+filename; } /** * 创建新的路径 * @param path * @param filename * @return */ public static String makeNewPath(String path,String filename){ int num = filename.hashCode();//01101011001011011111111111 1111 0101 0101 int path1=num&0xf; int path2=(num>>4)&0xf; String newPath=path+ File.separator+path1+File.separator+path2; File dir=new File(newPath); if(!dir.exists()){ dir.mkdirs(); } return newPath; } //遍历可以被下载的文件 public static void listFile(File dir,HashMap<String,String> map){ File[] files = dir.listFiles(); if(files!=null&&files.length>0){ for (File file : files) { if(file.isDirectory()){ listFile(file, map); }else{ //文件 String uuidFilename=file.getName(); String filename=uuidFilename.substring(uuidFilename.indexOf("_")+1); map.put(uuidFilename,filename); } } } } }
相关教程推荐:java入门教程
Das obige ist der detaillierte Inhalt vonJava implementiert Datei-Upload- und Download-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

Spring Boot vereinfacht die Schaffung robuster, skalierbarer und produktionsbereiteter Java-Anwendungen, wodurch die Java-Entwicklung revolutioniert wird. Der Ansatz "Übereinkommen über Konfiguration", der dem Feder -Ökosystem inhärent ist, minimiert das manuelle Setup, Allo
