日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Servlet笔记2-文件上传

發(fā)布時(shí)間:2024/8/26 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Servlet笔记2-文件上传 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Servlet上傳文件:
  Servlet 3.0改進(jìn)了部分API,其中HttpServletRequest增加了對文件上傳的支持。

  HttpServletRequest提供了兩個(gè)方法來處理文件上傳:
    1.Part getPart(String name):根據(jù)名稱來獲取文件上傳域

    2.Collection<Part> getParts():獲取所有的文件上傳域

  上面兩個(gè)方法的返回值都涉及一個(gè)API:Part,每個(gè)Part對象對應(yīng)于一個(gè)文件上傳域,該對象提供了很多方法來范文上傳文件的文件類型、大小、輸入流等,并提供了一個(gè)write(String file)方法將上傳文件寫入服務(wù)器磁盤

  向服務(wù)器上傳文件,表單里要使用<input type="file" .../>,并且,上傳文件一定要為表單域設(shè)置enctype屬性。
表單的enctype屬性指的是表單數(shù)據(jù)的編碼方式,該屬性有三個(gè)值:
  1.application/x-www-form-urlencoded:默認(rèn)的編碼方式,只處理表單域里的value屬性值,采用這種編碼方式的表單會將表單域的值處理成URL編碼方式

  2.multipart/form-data:這種編碼方式會以二進(jìn)制流的方式來處理表單數(shù)據(jù),這種編碼方式會把文件域指定文件的內(nèi)容也封裝到請求參數(shù)里

  3.text/plain:這種編碼方式當(dāng)表單的action屬性為mailto:URL的形式時(shí)比較方便,這種方式主要適用于直接通過表單發(fā)送郵件的方式

  文件上傳示例:

  頁面jsp:

<%--Created by IntelliJ IDEA.User: AdministratorDate: 2018/1/4Time: 16:46To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Servlet文件上傳</title> </head> <body><form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data">普通參數(shù):<input type="text" name="inputText" ><br>選擇文件:<input type="file" name="file" ><br><input type="submit" value="上傳"></form> </body> </html>

  Servlet程序:

/*** Description:servlet* Author: Eleven* Date: 2018/1/13 16:23*/ @WebServlet(name="upload",urlPatterns = "/upload") @MultipartConfig //處理文件上傳的Servlet,必須要加此注解 public class UploadServlet extends HttpServlet{@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//解決接收參數(shù)為中文亂碼的問題request.setCharacterEncoding("UTF-8");//解決向頁面輸出內(nèi)容為亂碼,即使用out.println()的時(shí)候response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();//獲取普通請求參數(shù)String inputText = request.getParameter("inputText");System.out.println("普通的參數(shù)為:"+inputText);//獲取文件上傳域Part part = request.getPart("file");//文件的上傳類型System.out.println("文件的上傳類型:"+part.getContentType());//文件上傳的大小System.out.println("上傳文件的大小:"+part.getSize());//文件上傳域的Header NameCollection<String> headerNames = part.getHeaderNames();//遍歷文件上傳域的Header Name Valuefor(String headerName:headerNames){System.out.println(headerName+"---->"+part.getHeader(headerName));}//獲取包含原始文件名的字符串String fileNameInfo = part.getHeader("content-disposition");//提取上傳文件的文件名String fileName = fileNameInfo.substring(fileNameInfo.indexOf("filename=\"")+10,fileNameInfo.length()-1);//將文件寫入服務(wù)器磁盤 保存在web應(yīng)用根路徑下的upload文件下part.write(getServletContext().getRealPath("upload")+"/"+fileName);out.println("文件上傳成功!");}}

?

  

  對于傳統(tǒng)的文件上傳需要借助common-fileupload等工具,處理起來有點(diǎn)復(fù)雜,借助Servlet 3.0的API,處理文件就變得比較簡單了。

?

轉(zhuǎn)載于:https://www.cnblogs.com/eleven258/p/8286650.html

總結(jié)

以上是生活随笔為你收集整理的Servlet笔记2-文件上传的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。