大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 一文讀懂Java怎么實現(xiàn)文件上傳到文件夾

一文讀懂Java怎么實現(xiàn)文件上傳到文件夾

更新時間:2022-05-17 11:21:49 來源:動力節(jié)點 瀏覽1824次

文件在每種編程語言中都起著至關重要的作用。為了使用 File,每個開發(fā)人員都應該了解如何用 Java 或其他編程語言實現(xiàn)文件上傳功能。

在本節(jié)中,我們將了解如何在 Java 中實現(xiàn)文件上傳功能,還將了解如何將文件上傳到文件夾。

在Java中,我們使用單個servlet和HTML表單來創(chuàng)建對 servlet 的文件上傳請求。我們實現(xiàn)了一個簡單的HTML表單,它有兩個字段,即 File 和 Destination。文件類型的輸入字段允許用戶從系統(tǒng)瀏覽文件。從系統(tǒng)中選擇文件后,我們將文件作為 POST 請求發(fā)送到服務器。我們?yōu)楸韱翁砑恿藘蓚€限制,即encrypt="multipart/form-data"和method="POST"。

有了這個限制,請求以編碼形式發(fā)送到服務器。servlet 處理 POST 請求,處理傳入的文件數(shù)據(jù),并從流中提取 File。目的地定義了我們需要在系統(tǒng)中保存文件的位置的路徑。數(shù)據(jù)被發(fā)布到 servlet,當我們單擊 Upload 按鈕時,它將文件存儲到指定位置。

HTML表單的代碼如下:

索引.html

<!DOCTYPE html>  
<html lang= "en" >  
    <頭部>  
        <title>Servlet 文件上傳示例</title>  
        <meta http-equiv= "Content-Type"  content= "text/html; charset=UTF-8" >  
    </head>  
    <正文>  
    <form method= "POST"  action= "uploadFile"  enctype= "multipart/form-data"  >  
            文件:  
            <輸入類型= “文件” 名稱= “文件”  ID= “文件”  />  
    <br/>  
    <br/>  
            目的地:  
            <輸入類型= “文本” 值= “/javaTpoint” 名稱= “目標” />  
            <br/>  
    <br/>  
            <輸入類型= “提交” 值= “上傳” 名稱= “上傳”  id= “上傳”  />  
        </form>  
    </正文>  
</html> 

輸出:

POST 和 GET 是我們在提交表單時可以使用的兩種方法。在這里,當我們提交表單時,瀏覽器通過組合所有部分來流式傳輸內容。每個部分都定義了表單的字段。

@WebServlet (name =  " FileUploadServletExample " , urlPatterns = { "/upload" })  
@MultipartConfig  
公共類 FileUploadServletExample 擴展 HttpServlet {   
    私有最終靜態(tài) 記錄器 LOGGER =     
            Logger.getLogger(FileUploadServlet.class .getCanonicalName ()); 

在上面的代碼中,我們使用了兩個注解,即具有屬性 name 和 urlPatterns 的@WebServlet和@MultipartConfig。

@WebServlet 和 @MultipartConfig 注釋用于定義 servlet 映射并指示 servlet 期望分別使用 multipart/form-data MIME 類型發(fā)出的請求。

servlet 執(zhí)行以下步驟將文件數(shù)據(jù)存儲到目標文件夾中:

servlet的saveFileToFolder方法從請求中檢索位置和文件。

之后,它通過使用getFileName()從文件部分獲取文件的名稱

Servlet 創(chuàng)建FileOutputStream類的實例,并通過使用它,將 File 存儲到指定位置。

try 部分處理將 File 存儲到指定位置的代碼,catch 部分處理無法存儲 File 的過程的錯誤。

FileUploadServletExample.java

@WebServlet (name =  " FileUploadServletExample " , urlPatterns = { "/upload" })  
@MultipartConfig  
公共類 FileUploadServletExample 擴展 HttpServlet {   
    private final static  Logger LOGGER = Logger.getLogger(FileUploadServlet.class .getCanonicalName ());      
    protected void  processRequest(HttpServletRequest request, HttpServletResponse response) throws  ServletException, IOException {   
        response.setContentType( "text/html;charset=UTF-8" );    
        // 創(chuàng)建用于保存文件的路徑組件  
        final  String path = request.getParameter( "destination" );  
        final  Part filePart = request.getPart( "file" );  
        最終 字符串文件名 = getFileName(filePart);            
        // 聲明 OutputStream、InputStream 和 PrintWriter 類的實例  
        輸出流 otpStream =  null ;  
        輸入流 iptStream =  null ;  
        最后 的 PrintWriter writer = response.getWriter();            
        // try 部分處理將文件存儲到指定位置的代碼  
        試試 {  
            // 初始化 OutputStream 和 InputStream 類的實例  
            otpStream =  new  FileOutputStream( new  File(path + File.separator + fileName));  
            iptStream = filePart.getInputStream();    
            int 讀取 =  0 ;                
            // 初始化字節(jié)數(shù)組用于存儲文件數(shù)據(jù)  
            最終字節(jié)[]字節(jié)= 新字節(jié)[ 1024 ];                  
            // 使用 while 循環(huán)使用 iptStream 從文件中讀取數(shù)據(jù),并使用 writer 和 otpStream 寫入目標文件夾  
            而 ((讀取= iptStream.read(字節(jié)))!= - 1 ){  
                otpStream.write(字節(jié),  0 ,讀取);  
            }  
            writer.println( "新文件"  +文件名+  "創(chuàng)建于"  +路徑);  
            LOGGER.log(Level.INFO,  "文件{0}上傳到 {1}" ,  new  Object[]{fileName, path});  
        }  
        // catch 部分處理錯誤   
        捕捉 (FileNotFoundException fne){  
            writer.println( "您要么沒有指定要上傳的文件,要么正在嘗試將文件上傳到受保護或不存在的位置。" );  
            writer.println( "<br/>錯誤:"  + fne.getMessage());  
            LOGGER.log(Level.SEVERE,  "文件上傳時出現(xiàn)問題。錯誤:{0}" ,  new  Object[]{fne.getMessage()});  
        }  
        // finally 部分將關閉所有打開的類  
        最后 {  
            如果 (otpStream!=  null ){  
                otpStream.close();  
            }  
            如果 (iptStream!=  null ){  
                iptStream.close();  
            }  
            如果 (作家!=  null ){  
                writer.close();  
            }  
        }  
    }  
    // getFileName() 方法從部件中獲取文件名  
    私人 字符串getFileName(最后 一部分){  
        // 從部件中獲取 header(content-disposition)  
        final  String partHeader = part.getHeader( "content-disposition" );  
        LOGGER.log(Level.INFO,  "Part Header = {0}" , partHeader);            
        // 從頭部獲取文件名的代碼  
        for  (字符串內容:part.getHeader(“內容處置” ).split(“;” )){  
            if  (content.trim().startsWith( "文件名" )) {  
                返回 content.substring(content.indexOf( '=' ) +  1 ).trim().replace( "\"" ,  "" );  
            }  
        }  
        // 沒有在頭部獲取文件名時返回null   
        返回空值;   
    }  
}  

為了構建、打包、部署和運行文件上傳程序,我們可以使用 NetBeans、Eclipse 或 Ant。對于 NetBeans,我們使用以下步驟:

從文件中選擇打開項目它會打開項目對話框。

從Open Project 對話框中,我們導航到tut-install/examples/web/

從該目錄中,我們選擇 fileupload 文件夾。

我們選中Open as Main Project復選框,然后單擊Open Project

在 Projects 選項卡中,右鍵單擊 fileupload 并選擇 Deploy。

現(xiàn)在,我們導航到瀏覽器并輸入以下 URL:

http://localhost:8080/fileupload/

輸入 URL 并按回車鍵后,將打開我們在上面創(chuàng)建的 HTML 表單。我們?yōu)g覽系統(tǒng)并選擇一個文件將其上傳到所需位置。在目標字段中,我們輸入需要存儲該文件的目錄的路徑。該目錄應該已經(jīng)在系統(tǒng)中創(chuàng)建并且必須是可寫的。如果我們沒有為目標字段設置任何內容并單擊上傳按鈕,它將引發(fā)異常。

當我們點擊上傳按鈕時,一個 POST 請求發(fā)送到 servlet,它會將文件復制到目標文件夾。

單擊上傳按鈕后,我們進入指定目錄并驗證上傳的文件是否存在。

以上就是關于“一文讀懂Java怎么實現(xiàn)文件上傳到文件夾”的介紹,大家如果想了解更多相關知識,不妨來關注一下動力節(jié)點的Java在線學習,里面的課程內容從入門到精通,細致全面,很適合沒有基礎的小伙伴學習,相信對大家會有所幫助的。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 手机看片国产欧美日韩高清 | 天天干天天舔天天射 | 亚欧成人毛片一区二区三区四区 | 日日摸日日碰夜夜97 | 日韩欧美一级毛片精品6 | 在线亚洲观看 | 狠狠色欧美亚洲综合色黑a 狠狠色视频 | a免费毛片在线播放 | 精品中文字幕久久久久久 | 四虎永久免费地ww4hu57 | 久久久受www免费人成 | 狠狠操夜夜爱 | 在线观看黄色网 | 国产精品日韩欧美一区二区三区 | 在线欧美视频免费观看国产 | 一级在线 | 欧洲 | 国产99区 | 九九亚洲精品 | 国产极品嫩模大尺度福利视频 | 中文字幕观看 | 久久精品一区二区三区不卡牛牛 | 欧美午夜在线观看理论片 | 亚洲一区二区三区国产精品 | 亚洲精品中文一区不卡 | 亚洲欧美专区精品久久 | 婷婷在线视频观看 | 午夜欧美精品久久久久久久久 | 一级中文字幕 | 欧美精品v欧洲精品 | 狠狠色丁香久久婷婷综合_中 | 在线观看亚洲精品国产 | 免费国产午夜高清在线视频 | 伊人久久成人成综合网222 | 日本三级强在线观看 | 久久久久久久久综合影视网 | 中文字幕在线免费视频 | 中文字幕在线观看不卡 | 亚洲欧美另类日韩 | 三级五月天 | freexxxx性特大另类ww | 97精品国产综合久久 |