您好,登錄后才能下訂單哦!
今天小編給大家分享一下java怎么實現(xiàn)文件的上傳功能的相關(guān)知識點,內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://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> </head> <body> <!-- 文件上傳對表單的要求 1、表單中的請求和提交的方式必須是post 2、 表單中應(yīng)該指定提交的請求為multipart 請求 ,通過在form表單中添加enctype屬性 為multipart/form-data 3、表單中要有file元素 --> <!-- ${pageContext.request.contextPath}/registerServlet --> <form action="${pageContext.request.contextPath }/registerServlet" method="post" enctype="multipart/form-data"> 姓名:<input type="text" name="name" /><br> <hr> 年齡:<input type="text" name="age" /><br> <hr> 照片 :<input type="file" name="photo"/> <br> <hr> <input type="submit" value="注冊"> <hr> </form> </body> </html>
package com.ui.servlet; 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.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.tomcat.jni.OS; import com.mysql.jdbc.Field; /** * Servlet implementation class RegisterServlet */ @WebServlet("/registerServlet") public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub if(!ServletFileUpload.isMultipartContent(request)) { throw new RuntimeException("當(dāng)前不支持文件上傳"); } try { DiskFileItemFactory factory=new DiskFileItemFactory(); //設(shè)置使用臨時文件的邊界值,大魚該值得文件上傳會先保存在臨時文件中,否則上傳文件會直接寫入到內(nèi)存當(dāng)中去 //單位 字節(jié) 在這里設(shè)置的為1m factory.setSizeThreshold(1024*1024*1); //設(shè)置臨時文件 String temppath=this.getServletContext().getRealPath("/temp"); File file2=new File(temppath); factory.setRepository(file2); //創(chuàng)建文件上傳核心組件 ServletFileUpload fileUpload=new ServletFileUpload(factory); //設(shè)置單個文件的大小不超過多少 fileUpload.setFileSizeMax(1024*1024*2); //上傳多個文件的要求總的大小不超過多少 fileUpload.setSizeMax(1024*1024*5); fileUpload.setHeaderEncoding("utf-8"); //設(shè)置每一個item的字符編碼為utf-8 List<FileItem> items=fileUpload.parseRequest(request); for (FileItem fileItem : items) { if(fileItem.isFormField()) { String filename=fileItem.getFieldName(); String fileValue=fileItem.getString("utf-8"); System.out.println(filename+"----"+fileValue); } else //如果是文件上傳表單項 { String filename=fileItem.getName(); InputStream inputStream=fileItem.getInputStream(); //獲取表單項的輸入流 String path=this.getServletContext().getRealPath("/fileContents"); File file=new File(path,filename); OutputStream outputStream=new FileOutputStream(file); int len=-1; byte[] bs=new byte[1024]; while((len=inputStream.read(bs))!=-1) { outputStream.write(bs,0,len); } outputStream.close(); inputStream.close(); //刪除臨時文件 fileItem.delete(); } } } catch (Exception e) { // TODO: handle exception System.out.println(e); } } }
以上就是“java怎么實現(xiàn)文件的上傳功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。