Cette fois je vais vous apprendre à utiliser JS et servlet pour implémenter le téléchargement de fichiers en H5, mais il y a un prérequis, il doit s'agir des versions h5 et jsp3.0, car les nouveaux attributs sont utilisés pour obtenir l'objet fichier et l'objet pièce en arrière-plan.
Laissez-moi vous montrer un cas ci-dessous
Jsp front-end
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> <script type="text/javascript" src="jquery-3.2.1.min.js"></script> </head> <body> <p> name:<input type="text" id="name"/> 文件:<input type="file" id="file"/> <br> <button id="btu" onclick="btu()">提交</button> </p> </body> <script> function btu(){ var name=$("#name").val(); var file=$("#file")[0].files[0];//新特性,获取文件对象 var fordata=new FormData();//新特性,得到formData对象,把获取的值扔进去,相当于map fordata.append("name",name); fordata.append("file",file); console.log(file) $.ajax({ url:"/war-2/UpdataFile", data:fordata, cache:false, processData:false, //必须写 contentType:false, //必须写 type:"post", success:function(data){ } }) } </script> </html>
Java back-end
package up; import java.io.File; import java.io.IOException; import java.util.Collection; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; /** * Servlet implementation class UpdataFile */ @MultipartConfig(location="E:/") @WebServlet("/UpdataFile") public class UpdataFile extends HttpServlet { private static final long serialVersionUID = 1L; private File file; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub System.out.println("1111111111"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //得到part对象,这个对象有write的方法,直接写到指定位置。但是千万别忘了写@MultipartConfig(location="E:/")注解,不指定位置默认是写到注解指定的位置。 Part part = request.getPart("file"); //普通的字段可以采用常规的getparamter的方法得到。 System.out.println(new String(request.getParameter("name").getBytes("iso-8859-1"),"utf-8")); System.out.println(part.getName()); System.out.println(part.getHeader("Content-Disposition")); System.out.println(part.getSize()); String fileName = getFileNameFromPart(part); part.write(fileName); } //截取文件名 public String getFileNameFromPart(Part part) { String header = part.getHeader("Content-Disposition"); String fileName = header.substring(header.indexOf("filename=\"")+10, header.lastIndexOf("\"")); return fileName; } }
Je pense que vous maîtrisez les méthodes après avoir lu ces cas. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !
Lecture connexe :
Étapes de mise en œuvre de la programmation DOM en html5
Utilisez H5 pour créer une liste déroulante avec effets spéciaux
Introduction détaillée de l'objet FormData en HTML
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!