Servlet文件上傳

request.setCharacterEncoding("UTF-8");  
        response.setContentType("text/html; charset=UTF-8");  
        //保存路徑  
        String savePath = getServletContext().getRealPath("/upload");  
        File saveDir = new File(savePath);  
        // 如果目錄不存在,就創建目錄  
        if(!saveDir.exists()){  
            saveDir.mkdir();  
        }  
          
        // 創建文件上傳核心類  
        DiskFileItemFactory factory = new DiskFileItemFactory();  
        ServletFileUpload sfu = new ServletFileUpload(factory);  
        //設置編碼  
        sfu.setHeaderEncoding("UTF-8");  
        // 設置上傳的單個文件的最大字節數爲2M  
        sfu.setFileSizeMax(1024*1024*2);  
        //設置整個表單的最大字節數爲10M  
        sfu.setSizeMax(1024*1024*10);  
          
        try{  
            // 處理表單請求  
            List<FileItem> itemList = sfu.parseRequest(request);  
            for (FileItem fileItem : itemList) {  
                // 對應表單中的控件的name  
                String fieldName = fileItem.getFieldName();  
                System.out.println("控件名稱:" + fieldName);  
                // 如果是普通表單控件  
                if(fileItem.isFormField()){  
                    String value = fileItem.getString();  
                    //重新編碼,解決亂碼  
                    value = new String(value.getBytes("ISO-8859-1"),"UTF-8");  
                    System.out.println("普通內容:" + fieldName + "=" + value);  
                // 上傳文件  
                }else{  
                    // 獲得文件大小  
                    Long size = fileItem.getSize();  
                    // 獲得文件名  
                    String fileName = fileItem.getName();  
                    System.out.println("文件名:"+fileName+"\t大小:" + size + "byte");  
                      
                    //設置不允許上傳的文件格式  
                    if(fileName.endsWith(".exe")){  
                        request.setAttribute("msg", "不允許上傳的類型!");  
                    }else{  
                        //將文件保存到指定的路徑  
                        File file = new File(savePath,fileName);  
                        fileItem.write(file);  
                        request.setAttribute("msg", "上傳成功!");  
                    }  
                }  
            }  
        }catch(FileSizeLimitExceededException e){  
            request.setAttribute("msg", "文件太大");  
        }catch(FileUploadException e){  
            e.printStackTrace();  
        }catch(Exception e){  
            e.printStackTrace();  
        }  
        //上傳完畢後  轉發到首頁  
        request.getRequestDispatcher("/index.jsp").forward(request, response);  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章