文件上傳

com.springsource.org.apache.commons.fileupload-1.2.0.jar

com.springsource.org.apache.commons.io-1.4.0.jar

 

<input type="file" name="myfile" enctype="multipart/form-datas">

//1、創建磁盤文件項工廠
            //作用:設置緩存文件的大小  設置臨時文件存儲的位置
            String path_temp = this.getServletContext().getRealPath("temp");
            //DiskFileItemFactory factory = new DiskFileItemFactory(1024*1024, new File(path_temp));
            DiskFileItemFactory factory = new DiskFileItemFactory();
            factory.setSizeThreshold(1024*1024);
            factory.setRepository(new File(path_temp));
            //2、創建文件上傳的核心類
            ServletFileUpload upload = new ServletFileUpload(factory);
            //設置上傳文件的名稱的編碼
            upload.setHeaderEncoding("UTF-8");

            //ServletFileUpload的API
            boolean multipartContent = upload.isMultipartContent(request);//判斷表單是否是文件上傳的表單
            if(multipartContent){
                //是文件上傳的表單
                //***解析request獲得文件項集合
                List<FileItem> parseRequest = upload.parseRequest(request);
                if(parseRequest!=null){
                    for(FileItem item : parseRequest){
                        //判斷是不是一個普通表單項
                        boolean formField = item.isFormField();
                        if(formField){
                            //username=zhangsan
                            String fieldName = item.getFieldName();
                            String fieldValue = item.getString("UTF-8");//對普通表單項的內容進行編碼
                            
                            System.out.println(fieldName+"----"+fieldValue);
                            
                            //當表單是enctype="multipart/form-data"時 request.getParameter相關的方法
                            //String parameter = request.getParameter("username");
                            
                        }else{
                            //文件上傳項
                            //文件的名
                            String fileName = item.getName();
                            //獲得上傳文件的內容
                            InputStream in = item.getInputStream();
                            String path_store = this.getServletContext().getRealPath("upload");
                            OutputStream out = new FileOutputStream(path_store+"/"+fileName);
                            IOUtils.copy(in, out);
                            in.close();
                            out.close();
                            
                            //刪除臨時文件
                            item.delete();
                            
                        }
                    }
                }

            }else{
                //不是文件上傳表單
                //使用原始的表單數據的獲得方式 request.getParameter();
            }
        } catch (FileUploadException e) {
            e.printStackTrace();
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章