最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaWeb實現(xiàn)文件上傳功能詳解

 更新時間:2022年02月10日 09:39:55   作者:「已注銷」  
這篇文章主要介紹了JavaWeb實現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

文件上傳功能的實現(xiàn)

在大多數(shù)網(wǎng)站中,我們都可以看見文件上傳和下載功能的實現(xiàn),今天我們就文件上傳做一個詳細的總結

實現(xiàn)步驟:

1、新建一個JSP頁面:表單必須設置:enctype="multipart/form-data"參數(shù) upload.jsp:

<form action="" method="post" enctype="multipart/form-data">
<!--accept=".txt"標簽用來確定上傳的文件默認類型-->
請選擇您要上傳的文件:<input type="file" name="fileName" accept=".txt" ?/> <br/>
確認上傳?<input type="submit" value="確認" /><input type="reset" value="重選" />
</form>

2、編寫后端功能Servlet代碼:

UploadFile.java:

具體實現(xiàn)思路:

--------1、設置編碼方式為utf-8,獲取字符流
--------2、創(chuàng)建DiskFileItemFactory工廠類對象,將文件封裝成單獨的FileItem對象
--------3、設置文件緩存目錄
--------4、加載文件緩存目錄,創(chuàng)建ServletFileUpload對象
--------5、設置文件編碼為utf-8
--------6、解析request請求,得到上傳文件的FileItem對象,得到的也就是所有的表單name
--------7、遍歷表單name集合,判斷哪一些是普通字段和文件字段,進行區(qū)分
--------8、得到所上傳的文件路徑名
--------9、截取文件名
--------10、設置上傳的目標文件夾路徑
--------11、通過字節(jié)流進行文件的對拷

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1、設置編碼方式為utf-8,獲取字符流
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter write = response.getWriter();
//2、創(chuàng)建DiskFileItemFactory工廠類對象,將文件封裝成單獨的FileItem對象
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
//3、設置文件緩存目錄
File file = new File("C:\\Cache");
?? ??? ?if(!file.exists()) {
?? ??? ??? ?//如果文件不存在,就創(chuàng)建一個文件
?? ??? ??? ?file.mkdirs();
?? ??? ?}
?? ??? ?diskFileItemFactory.setRepository(file); ? ? ? ? //加載文件緩存目錄
//4、創(chuàng)建ServletFileUpload對象
ServletFileUpload fileUpload = new ServletFileUpload(diskFileItemFactory);
//5、設置文件編碼為utf-8
fileUpload.setHeaderEncoding("utf-8");
//6、解析request請求,得到上傳文件的FileItem對象,得到的也就是所有的表單name --->比如:這里只有一個name="fileName" 拿到的就是這個集合
?? ??? ?List<FileItem> fileItems = null;
?? ??? ?try {
?? ??? ??? ?fileItems = fileUpload.parseRequest(request);
?? ??? ?} catch (FileUploadException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
//8、遍歷集合
for(FileItem fileItem:fileItems) { ? //文本域
//判斷是否為普通字段
?? ??? ??? ?if(fileItem.isFormField()) {
?? ??? ??? ??? ?//得到字段名、字段值
?? ??? ??? ??? ?String name = fileItem.getFieldName(); ? ? //
?? ??? ??? ?}
? ? //為文件域
?? ??? ??? ?else {
//9、得到所上傳的文件路徑名
String fileName = fileItem.getName();
?//10、截取文件名?
String fiString = fileName.substring(fileName.lastIndexOf("\\")+1);
//11、設置上傳的目標文件夾路徑
File filedir = new File("C:\\NewFile");
? ? ? ? if(!filedir.exists()) {
?? ??? ??? ??? ??? ?filedir.mkdir();
?? ??? ??? ??? ?}
//? ? System.out.println(user.getUserName());
?? ??? ??? ??? ?File filepath = new File(filedir+"\\"+fiString);?
//? ? System.out.println(fiString);
?? ??? ??? ??? ?if(!filepath.exists()) {
?? ??? ??? ??? ??? ?filepath.createNewFile();
?? ??? ??? ??? ?}
?? ??? ??? ??? ?//獲得文件上傳流
?? ??? ??? ??? ?InputStream in = fileItem.getInputStream();
?? ??? ??? ??? ?//使用FileOutStream打開服務器端的上傳文件
?? ??? ??? ??? ?FileOutputStream out = new FileOutputStream(filepath);
?? ??? ??? ??? ?//流的對拷
?? ??? ??? ??? ?byte[] bb = new byte[1024];
?? ??? ??? ??? ?int len ;?
?? ??? ??? ??? ?while((len= in.read(bb))>0) {
?? ??? ??? ??? ??? ?out.write(bb, 0, len);
//?? ??? ??? ??? ??? ?out.close();
//?? ??? ??? ??? ??? ?in.close();
?? ??? ??? ??? ??? ?fileItem.delete(); ? //刪除臨時文件
?? ??? ??? ??? ?}
?? ??? ??? ??? ?write.println("文件上傳成功<br/>");
?? ??? ??? ?}
?? ??? ?}
?? ?}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Netty的心跳檢測解析

    Netty的心跳檢測解析

    這篇文章主要介紹了Netty的心跳檢測解析,客戶端的心跳檢測對于任何長連接的應用來說,都是一個非常基礎的功能,要理解心跳的重要性,首先需要從網(wǎng)絡連接假死的現(xiàn)象說起,需要的朋友可以參考下
    2023-12-12
  • 如何使用ThreadLocal上下文解決查詢性能問題

    如何使用ThreadLocal上下文解決查詢性能問題

    這篇文章主要介紹了利用ThreadLocal上下文解決查詢性能問題,有兩種解決方案,一種是使用ThreadLocal上下文,另一種是使用Redis緩存,需要的朋友可以參考下
    2023-07-07
  • spring cloud Feign使用@RequestLine遇到的坑

    spring cloud Feign使用@RequestLine遇到的坑

    這篇文章主要介紹了spring cloud Feign使用@RequestLine遇到的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 淺談Java中向上造型向下造型和接口回調(diào)中的問題

    淺談Java中向上造型向下造型和接口回調(diào)中的問題

    這篇文章主要介紹了淺談Java中向上造型向下造型和接口回調(diào)中的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • spring boot配置多個請求服務代理的完整步驟

    spring boot配置多個請求服務代理的完整步驟

    這篇文章主要給大家介紹了關于spring boot配置多個請求服務代理的完整步驟,文中通過示例代碼介紹的非常詳細,對大家學習或者使用spring boot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-11-11
  • Java編程打印購物小票實現(xiàn)代碼

    Java編程打印購物小票實現(xiàn)代碼

    這篇文章主要介紹了Java編程打印購物小票實現(xiàn)代碼,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Jmeter參數(shù)化實現(xiàn)原理及過程解析

    Jmeter參數(shù)化實現(xiàn)原理及過程解析

    這篇文章主要介紹了Jmeter參數(shù)化實現(xiàn)原理及過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • Spring源碼解析之事務傳播特性

    Spring源碼解析之事務傳播特性

    今天帶大家分析Spring源碼,文中對Spring事務傳播特性做了非常詳細的介紹及代碼示例,對正在學習java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Java加載與存儲指令之ldc與_fast_aldc指令

    Java加載與存儲指令之ldc與_fast_aldc指令

    ldc指令將int、float、或者一個類、方法類型或方法句柄的符號引用、還可能是String型常量值從常量池中推送至棧頂。這一篇介紹一個虛擬機規(guī)范中定義的一個字節(jié)碼指令ldc,另外還有一個虛擬機內(nèi)部使用的字節(jié)碼指令_fast_aldc。需要的盆友可參考下面文章的內(nèi)容
    2021-09-09
  • java map遍歷的四種方法總結

    java map遍歷的四種方法總結

    以下是我整理的關于java中map的遍歷的四種方法。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10

最新評論

武川县| 沂水县| 中江县| 通城县| 缙云县| 博湖县| 万荣县| 全南县| 元氏县| 浮山县| 交城县| 锡林浩特市| 绵阳市| 吴川市| 长兴县| 长岭县| 定州市| 普兰县| 保康县| 芜湖县| 大埔区| 永和县| 肃宁县| 中西区| 扶沟县| 新沂市| 苗栗市| 克拉玛依市| 察哈| 常德市| 房产| 县级市| 曲麻莱县| 襄汾县| 弋阳县| 兴和县| 永修县| 星子县| 桐柏县| 景宁| 巨鹿县|