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

首頁 > 學院 > 開發設計 > 正文

文件的上傳Commons FileUpload(web基礎學習筆記十六)

2019-11-14 22:48:19
字體:
來源:轉載
供稿:網友
文件的上傳Commons FileUpload(web基礎學習筆記十六)一、表單設置
<form action="<%=request.getContextPath()%>/jsp/admin/doAdd.jsp" enctype="mult

設置屬性:

enctype="multipart/form-data";

<tr><td class="text_tabledetail2">上傳圖片 </td><td><input type="file" name="picPath" value=""/></td></tr>

類型設置:type="file";

表單

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><%@ page language="java" import="java.util.*,com.pb.news.entity.*" pageEncoding="UTF-8"%><html>    <head>        <link href="<%=request.getContextPath() %>/CSS/common.css" rel="stylesheet" type="text/css" />        <script type="text/Javascript" src="<%=request.getContextPath() %>/ckeditor/ckeditor.js"></script>    </head><body><form name ="dataForm" id="dataForm" action="<%=request.getContextPath()%>/jsp/admin/doAdd.jsp" method="post"  enctype="multipart/form-data">    <table class="tb" border="0" cellspacing="5" cellpadding="0">        <thead>            <tr><td align="center" colspan="2" class="text_tabledetail2">增加新聞</td></tr>        </thead>        <tbody>            <tr>                <td class="text_tabledetail2">分類</td>                <td>                <!-- 列出所有的新聞分類 -->                    <select name="categoryId">                        <option value="1">國內</option>                        <option value="2">國際</option>                        <option value="3">娛樂</option>                        <option value="4">軍事</option>                        <option value="5">財經</option>                        <option value="6">天氣</option>                    </select>                </td>            </tr>            <tr>                <td class="text_tabledetail2">標題</td>                <td><input type="text" name="title" value=""/></td>            </tr>            <tr>                <td class="text_tabledetail2">作者</td>                <td><input type="text" name="author" value=""/></td>            </tr>                        <tr>                <td class="text_tabledetail2">摘要</td>                <td><textarea id="summary" name="summary" rows="8" cols="50"></textarea></td>            </tr>            <tr>                <td class="text_tabledetail2">內容</td>                <td>                <div id="xToolbar"></div>                <textarea id="newscontent" name="newscontent" class="ckeditor" rows="8"></textarea>                </td>            </tr>            <tr>                <td class="text_tabledetail2">上傳圖片 </td>                <td><input type="file" name="picPath" value=""/></td>            </tr>            <tr>                <td style="text-align:center;" colspan="2">                    <button type="submit" class="page-btn" name="save">保存</button>                    <input type="hidden" name="id" value=""/>                    <button type="button" class="page-btn" name="return" onclick="javascript:location.href='newsDetailList.jsp'">返回</button>                </td>            </tr>        </tbody>    </table></form></body></html>
二、下載控件導入

http://commons.apache.org/

采用apache的開源工具common-fileupload這個文件上傳組件,

Commons FileUpload:http://commons.apache.org/PRoper/commons-fileupload/download_fileupload.cgi

common-fileupload是依賴于common-io這個包的,所以還需要下載這個包。

Download Commons IO:http://commons.apache.org/proper/commons-io/download_io.cgi

下載以上2個控件并導入

三、提交頁面

doAdd.jsp

<%@page import="java.io.File"%><%@page import="org.apache.commons.fileupload.FileItem"%><%@page import="java.util.List"%><%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%><%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%><%@page import="java.util.Date"%><%@page import="com.pb.news.entity.News"%><%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@include file="../common/common.jsp"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>    <%        //設置頁面編碼     request.setCharacterEncoding("utf-8");    boolean bRet = false;    boolean bUpload = false;    String uploadFileName = "";    String fieldName = "";    //聲明News對象    News news=new News();    //設置創建時間    news.setCreateDate(new Date());    //判斷表單個是否有多個部分組成,將整個請求做做為判斷    boolean isMultipart=ServletFileUpload.isMultipartContent(request);    //得到上傳文件的保存目錄,    //String uploadpath=this.getServletContext().getRealPath("/upload/");    String uploadFilePath=request.getsession().getServletContext().getRealPath("/upload/");    //判斷是表單是否為多部分組成    if(isMultipart==true){        //使用Apache文件上傳組件處理文件上傳步驟:        //1、創建一個DiskFileItemFactory工廠        DiskFileItemFactory factory=new DiskFileItemFactory();        //2、創建一個文件上傳解析器        ServletFileUpload upload=new ServletFileUpload(factory);        try{    //3、使用ServletFileUpload解析器解析上傳數據,解析結果返回的是一個List<FileItem>集合,每一個FileItem對應一個Form表單的輸入項        List<FileItem> items=upload.parseRequest(request);         //遍歷集合         for(FileItem item:items){            //如果是普通的數據            if(item.isFormField()){              //得到集合元素              fieldName=item.getFieldName();              //判斷              if(fieldName.equals("title")){                  //如果是標題,就設置新聞標題,并將字符集設置為utf-8                  news.setTitle(item.getString("utf-8"));                  //如果是ID則              }else if(fieldName.equals("id")){                   //獲取ID            String id = item.getString();                   //判斷ID是還為空            if (id != null && !id.equals("")){                news.setId(Integer.parseInt(id));            }                   //類別,強制類型轉換        }else if (fieldName.equals("categoryId")){            news.setCategoryId(Integer.parseInt(item.getString()));            //如果是摘要,設置字符編碼        }else if (fieldName.equals("summary")){            news.setSummary(item.getString("UTF-8"));            //如果是內容,設置字符編碼        }else if (fieldName.equals("newscontent")){            news.setContent(item.getString("UTF-8"));            //如果是作者名稱,設置字符編碼        }else if(fieldName.equals("author")){            news.setAuthor(item.getString("UTF-8"));        }                //如果是上傳數據            }else{                //得到集合元素                String fileName = item.getName();                //判斷是否為空                if(fileName!=null&&!fileName.equals("")){                    //不是空得到文件名                    File fullFile=new File(item.getName());                    //保存路徑 和名字                    File saveFile = new File(uploadFilePath, fullFile.getName());                    //寫入文件                    item.write(saveFile);                    //上傳的文件名                    uploadFileName = fullFile.getName();                    //設置新聞圖片牟路徑和名字                    news.setPicPath(uploadFileName);                    //上傳成功                    bUpload = true;                                }                            }         }                    }catch(Exception e){            e.printStackTrace();        }    }    System.out.println("上傳成功后的文件名是::"+news.getPicPath());    //調用后臺方法,將新聞信息插入數據庫    bRet=newsService.addNews(news);    %>    <%    //判斷是還上傳成功if (bRet) {    //成功就跳轉到列表頁面    response.sendRedirect("newsDetailList.jsp");} else {    //返回添加的頁面    response.sendRedirect("newsDetailCreate.jsp");}%></body></html>
四、設置文件大小和類型4.1、html頁面
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><!-- 聲明表單屬性為enctype=multipart/form-data --><form action="doupload.jsp" method="post" enctype="multipart/form-data"><table><tr><td>上傳者</td><td><input type="text" name="username"/></td></tr><tr><!-- 設置類型為file --><td colspan="2"><input type="file" name="filename"/></td></tr><tr><td><input type="submit" value="提交" /></td></tr></table></form><%//判斷請求是還為空Object name=request.getAttribute("name");if(name!=null){    out.println(name.toString()+"<br/>");}//判斷請求是還為空Object msg=request.getAttribute("msg");if(msg!=null){    out.println(msg.toString()+"<br/>");}//判斷請求是還為空Object imgsrc=request.getAttribute("imgsrc");if(imgsrc!=null){    out.println(imgsrc.toString()+"<br/>");    out.println("<img src='"+imgsrc.toString()+"'/>");}%></body></html>
4.2 、JSP頁面
<%@page import="java.io.File"%><%@page import="java.util.Date"%><%@page import="java.text.SimpleDateFormat"%><%@page import="java.util.ArrayList"%><%@page import="org.apache.commons.fileupload.FileItem"%><%@page import="java.util.List"%><%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%><%@page import="org.apache.commons.fileupload.FileItemFactory"%><%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%><%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><%//設置出字符編碼request.setCharacterEncoding("UTF-8");//判斷整個請求做為參數,是不中有多部分組成boolean isMutipart=ServletFileUpload.isMultipartContent(request);//設置允許上傳的文件格式List<String> filelist=new ArrayList<String>();filelist.add(".jpg");filelist.add(".png");filelist.add(".gif");if(isMutipart==true){    //創建磁盤工廠類    FileItemFactory factory=new DiskFileItemFactory();    //創建上傳文件解析器    ServletFileUpload upload=new ServletFileUpload(factory);    //將整個請求做為一個集合    List<FileItem> items=upload.parseRequest(request);    //遍歷    for(FileItem item:items){        if(item.isFormField()){            //如果是普通表單按普通表單處理            //String username=item.getFieldName();            String name=item.getString("utf-8");            request.setAttribute("name", name);                    }else{            //如果是上傳文件            //獲取文件名稱            String filename=item.getName();            //獲取文件擴展名            String fileext=filename.substring(filename.lastIndexOf("."));            //判斷擴展名            if(filelist.contains(fileext)){                //判斷文件大小小于1M可以上傳                if(item.getSize()<1024*1024){                    //獲取文件上傳路徑                    String uploadpath=this.getServletContext().getRealPath("upload");                    //對文件重命名                    SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddhhmmss");                    //當前時間加擴展名                    String newfilename=sdf.format(new Date())+fileext;                    //文件對象                    File savefile=new File(uploadpath,newfilename);                    //開始上傳                    item.write(savefile);                    request.setAttribute("msg", "上傳成功");                    request.setAttribute("imgsrc", "../upload/"+newfilename);                }else{                    //判斷文件大小大于512K可以上傳                    //提示錯誤類型                request.setAttribute("msg","文件只能上傳1M以下的 !");                }            }else{                //提示錯誤類型                request.setAttribute("msg", "只能上傳jpb,png,gif的圖片");            }        }            }    //轉發到上傳頁面    request.getRequestDispatcher("uploadtest.jsp").forward(request, response);}%></body></html>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江口县| 洪洞县| 龙门县| 南宁市| 全椒县| 周至县| 大兴区| 九龙县| 赤城县| 莆田市| 新宁县| 平谷区| 武汉市| 神农架林区| 松滋市| 长兴县| 于田县| 太保市| 巫山县| 铁岭市| 乌兰浩特市| 鄂尔多斯市| 和政县| 宜宾县| 和硕县| 乾安县| 饶阳县| 龙陵县| 白水县| 革吉县| 临西县| 松桃| 榆林市| 雷波县| 建瓯市| 库尔勒市| 镇巴县| 关岭| 宝鸡市| 山东| 山东|