国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

使用apache-fileupload處理文件上傳與上傳多個文件 二(60)

2019-11-15 00:12:22
字體:
供稿:網(wǎng)友
使用apache-fileupload處理文件上傳與上傳多個文件 二(60)

一 使用apache-fileupload處理文件上傳

框架:是指將用戶經(jīng)常處理的業(yè)務進行一個代碼封裝。讓用戶可以方便的調(diào)用。

目前文件上傳的(框架)組件

Apache----fileupload -

Orialiy – COS – 2008() -

jsp-smart-upload – 200M。

用fileupload上傳文件:

需要導入第三方包:

Apache-fileupload.jar – 文件上傳核心包。

Apache-commons-io.jar – 這個包是fileupload的依賴包。同時又是一個工具包。

核心類:

DiskFileItemFactory – 設置磁盤空間,保存臨時文件。只是一個具類。

ServletFileUpload - 文件上傳的核心類,此類接收request,并解析reqeust。

servletfileUpload.parseRequest(requdest) - List<FileItem>

第一步:導入包

第二步:書寫一個servlet完成doPost方法

/** * DiskFileItemFactory構(gòu)造的兩個參數(shù) * 第一個參數(shù):sizeThreadHold - 設置緩存(內(nèi)存)保存多少字節(jié)數(shù)據(jù),默認為10K *            如果一個文件沒有大于10K,則直接使用內(nèi)存直接保存成文件就可以了。 *          如果一個文件大于10K,就需要將文件先保存到臨時目錄中去。 * 第二個參數(shù) File 是指臨時目錄位置 * */public class Up2Servlet extends HttpServlet {    public void doPost(HttpServletRequest req, HttpServletResponse resp)           throws ServletException, IOException {       req.setCharacterEncoding("UTf-8");       //獲取項目的路徑       String path = getServletContext().getRealPath("/up");       //第一步聲明diskfileitemfactory工廠類,用于在指的磁盤上設置一個臨時目錄       DiskFileItemFactory disk =              new DiskFileItemFactory(1024*10,new File("d:/a"));       //第二步:聲明ServletFileUpoload,接收上面的臨時目錄       ServletFileUpload up = new ServletFileUpload(disk);       //第三步:解析request       try {           List<FileItem> list =  up.parseRequest(req);           //如果就一個文件           FileItem file = list.get(0);           //獲取文件名,帶路徑           String fileName = file.getName();           fileName = fileName.substring(fileName.lastIndexOf("http://")+1);           //獲取文件的類型           String fileType = file.getContentType();           //獲取文件的字節(jié)碼           InputStream in = file.getInputStream();           //聲明輸出字節(jié)流           OutputStream out = new FileOutputStream(path+"/"+fileName);           //文件copy           byte[] b = new byte[1024];           int len = 0;           while((len=in.read(b))!=-1){              out.write(b,0,len);           }           out.close();           long size = file.getInputStream().available();           //刪除上傳的臨時文件           file.delete();           //顯示數(shù)據(jù)           resp.setContentType("text/html;charset=UTf-8");           PRintWriter op = resp.getWriter();           op.print("文件上傳成功<br/>文件名:"+fileName);           op.print("<br/>文件類型:"+fileType);           op.print("<br/>文件大小(bytes)"+size);       } catch (Exception e) {           e.printStackTrace();       }    }}

二 上傳多個文件

第一步:修改頁面的表單為多個input type=”file”

<form action="<c:url value='/Up3Servlet'/>" method="post" enctype="mult

第二步:遍歷list<fileitem>

public class Up3Servlet extends HttpServlet {    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        request.setCharacterEncoding("UTF-8");        String path = getServletContext().getRealPath("/up");        //聲明disk        DiskFileItemFactory disk = new DiskFileItemFactory();        disk.setSizeThreshold(1024*1024);        disk.setRepository(new File("d:/a"));        //聲明解析requst的servlet        ServletFileUpload up = new ServletFileUpload(disk);        try{            //解析requst            List<FileItem> list = up.parseRequest(request);            //聲明一個list<map>封裝上傳的文件的數(shù)據(jù)            List<Map<String,String>> ups = new ArrayList<Map<String,String>>();            for(FileItem file:list){                 Map<String,String> mm = new HashMap<String, String>();                //獲取文件名                String fileName = file.getName();                fileName = fileName.substring(fileName.lastIndexOf("http://")+1);                String fileType = file.getContentType();                InputStream in = file.getInputStream();                int size = in.available();                //使用工具類                FileUtils.copyInputStreamToFile(in,new File(path+"/"+fileName));                 mm.put("fileName",fileName);                mm.put("fileType",fileType);                mm.put("size",""+size);                                ups.add(mm);                file.delete();             }            request.setAttribute("ups",ups);            //轉(zhuǎn)發(fā)            request.getRequestDispatcher("/jsps/show.jsp").forward(request, response);                    }catch(Exception e){            e.printStackTrace();        }    }}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 克什克腾旗| 甘德县| 尉氏县| 云霄县| 京山县| 庄河市| 石景山区| 嘉兴市| 斗六市| 塘沽区| 休宁县| 西和县| 许昌市| 奎屯市| 武山县| 奉新县| 措美县| 炉霍县| 台东县| 黄冈市| 广安市| 峨眉山市| 威远县| 北流市| 彩票| 马尔康县| 百色市| 宁蒗| 通榆县| 济宁市| 化州市| 双辽市| 抚宁县| 鹿泉市| 原平市| 宁海县| 江陵县| 武鸣县| 高淳县| 阳城县| 布尔津县|