<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    無線&移動互聯網技術研發

    換位思考·····
    posts - 19, comments - 53, trackbacks - 0, articles - 283
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
    今天幫個朋友部署了他的博客(JSP + JAVA + SQLSERVER 2000),設計到頭像上傳,部署完了,bean有下小叉叉,郁悶,當時就糗了。恨不得找個地縫鉆進去。晚上回來找找資料,總結了一把,也算是有點收獲了。這個我以前用過,呵,都忘了具體怎么實現的了。就象網上雜七雜八說的一樣,很多種實現方法,多利用各種插件,我這里就是用apache的commons-fileupload。先去下這個包。然后接著下面。現在知道了,很簡單。
    http://www.cnblogs.com/yyw84/archive/2007/06/27/797652.html,這里有個非常好的框架。

    upload
    package com.handson.bbs.servlet;

    import java.io.File;
    import java.io.IOException;
    import java.util.Date;
    import java.util.List;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    import com.handson.bbs.bo.UserBO;
    import com.handson.bbs.model.User;
    /**
     * **********************************************
     * @description 文件上傳
     *                 針對本項目,上傳圖片在uploadFile/Image
     *                         緩存目錄 c:\\tmp\\ 目錄下
     *                 照片上傳后,后面代碼處理及時更新用戶照片。
     * 
    @author Gavin.lee
     * @date 2009-6-13 21:35:47
     * 
    @version 1.0
     ***********************************************
     
    */

    public class UploadPhotoServlet extends HttpServlet{
        
    public void doGet(HttpServletRequest request, HttpServletResponse response)
                
    throws ServletException, IOException {
            
    this.doPost(request, response);
            
        }


        
    public void doPost(HttpServletRequest request, HttpServletResponse response)
                
    throws ServletException, IOException {        
            String filepath 
    = this.getServletContext().getRealPath("/uploadFile/Image/");    //容器相對路徑
            
            File tmp 
    = new File("c:\\tmp\\");
            
    if(! tmp.exists()) {
                tmp.mkdirs();
            }

            DiskFileItemFactory factory 
    = new DiskFileItemFactory();    //創建磁盤工廠
            factory.setRepository(tmp);    //文件緩存路徑
            factory.setSizeThreshold(10 * 1096 );
            ServletFileUpload sfu 
    = new ServletFileUpload(factory);        //創建處理工具
            sfu.setSizeMax(10*1024*1024); //服務器端可以接收的最大文件大小,-1表示無上限
            String filename = null;
            
    try {
                List
    <FileItem> list = sfu.parseRequest(request);        //解析
                FileItem item= list.get(0);
                filename 
    = item.getName();
                
    if(filename.equals("")) {
                    request.getRequestDispatcher(
    "/com/visualizePhoto.jsp").forward(request, response);
                    
    return ;
                }
                
                
    int pos = filename.lastIndexOf(".");                    //取圖片文件格式
                if(pos > 0{
                    Date date 
    = new Date();
                    filename 
    =filepath+'/'+ date.getTime()+filename.substring(pos);
                }

                item.write(
    new File(filename));    //寫到磁盤
            }
     catch(Exception e) {
                e.printStackTrace();
            }

            
            
    // 只針對文件上傳的話,后面代碼不用看了,后面是針對及時更新用戶信息(照片)
            HttpSession session = request.getSession();
            User user 
    = (User)session.getAttribute("user");        
            
    int pos = filename.indexOf("uploadFile");    //設置圖片相對路徑
            if(pos > 0{
                filename 
    = filename.substring(pos,pos+10)+'/'+filename.substring(pos+11);
            }

            user.setPhoto(filename);
            
            UserBO userBo 
    = UserBO.getInstance();
            
    if(userBo.updateUser(user)){
                session.setAttribute(
    "user", user);
                request.getRequestDispatcher(
    "/com/visualizePhoto.jsp").forward(request, response);
            }

        }


    }


    download
    下載似乎就更簡單了,
    package com.Gavin.tools.fileupload;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.PrintWriter;

    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class FileDownloadServlet extends HttpServlet {

        
    public void doPost(HttpServletRequest request, HttpServletResponse response)
                
    throws ServletException {
            String filename 
    = request.getParameter("file_name");
            
            
    if (filename == null)
                filename 
    = "";
            
            filename 
    = filename.trim();

            InputStream inStream 
    = null;
            String attchname 
    = "";

            
    byte[] b = new byte[100];
            
    int len = 0;
            
    try {            
                attchname 
    = getAttachName(filename);    //取得附件的名稱
                filename = getRealName(request, filename);    //取得附件的全路徑
                
                
    if (filename == null{
                    System.out.println(
    "文件不存在,或者禁止下載");
                    
    return;
                }

                attchname 
    = toUtf8String(attchname);    //將文件轉碼 UTF-8
                inStream = new FileInputStream(filename);
                response.reset();    
    //必須reset,否則會出現文件不完整
                
                response.setContentType(
    "application/x-msdownload");
                response.addHeader(
    "Content-Disposition""attachment; filename=\""    + attchname + "\"");
                
                
    //循環取出流中的數據 
                while ((len = inStream.read(b)) > 0{
                    response.getOutputStream().write(b, 
    0, len);
                }

                inStream.close();
                
            }
     catch (Exception e) {
                e.printStackTrace();
            }

        }


        
    //取得附件的名稱
        public static String getAttachName(String filename) {
            
    if (filename == null)
                
    return "";
            filename 
    = filename.trim();
            
    int pos = 0;
            
            pos 
    = filename.lastIndexOf("\\");        
            
    if (pos > -1{
                filename 
    = filename.substring(pos + 1);
            }
            
            
            pos 
    = filename.lastIndexOf("/");        
            
    if (pos > -1{
                filename 
    = filename.substring(pos + 1);
            }

            
            pos 
    = filename.lastIndexOf(File.separator);        
            
    if (pos > -1{
                filename 
    = filename.substring(pos + 1);
            }

            
            
    return filename;
        }


        
    //UTF8轉碼
        public static String toUtf8String(String string) {
            StringBuffer sb 
    = new StringBuffer();
            
    for (int i = 0; i < string.length(); i++{
                
    char c = string.charAt(i);
                
    if (c >= 0 && c <= 255{
                    sb.append(c);
                }
     else {
                    
    byte[] b;
                    
    try {
                        b 
    = Character.toString(c).getBytes("utf-8");
                    }
     catch (Exception ex) {
                        System.out.println(ex);
                        b 
    = new byte[0];
                    }

                    
    for (int j = 0; j < b.length; j++{
                        
    int k = b[j];
                        
    if (k < 0)
                            k 
    += 256;
                        sb.append(
    "%" + Integer.toHexString(k).toUpperCase());
                    }

                }

            }

            String s_utf8 
    = sb.toString();
            sb.delete(
    0, sb.length());
            sb.setLength(
    0);
            sb 
    = null;
            
    return s_utf8;
        }


        
    //取得下載文件的真實全路徑名稱
        private String getRealName(HttpServletRequest request, String filename) {
            
    if (request == null || filename == null)
                
    return null;
            filename 
    = filename.trim();
            
    if (filename.equals(""))
                
    return null;

            String filepath 
    = request.getRealPath(filename);
            
    if (filepath == null)
                
    return null;
            File file 
    = new File(filepath);
            
    if (!file.exists())
                
    return null;
            
    return filepath;
        }


        
    public void doGet(HttpServletRequest request, HttpServletResponse response)
                
    throws ServletException {        
            
    this.doPost(request, response);
        }


    }

    同樣這個要進行web.xml配置一下servlet。完工 O(∩_∩)O~,  這里也有一個不錯的 http://www.cnblogs.com/ungshow/archive/2009/01/12/1374491.html
     
    主站蜘蛛池模板: 男人j进入女人j内部免费网站| 香港一级毛片免费看| 免费观看一区二区三区| 亚洲av色香蕉一区二区三区| 无套内谢孕妇毛片免费看看| 国产免费A∨在线播放| 久久久99精品免费观看| 亚洲人JIZZ日本人| 免费无码又爽又刺激网站直播| 亚洲午夜福利在线观看| 久久免费区一区二区三波多野| 香蕉蕉亚亚洲aav综合| 久久精品国产亚洲av天美18| 午夜网站在线观看免费完整高清观看| 九月丁香婷婷亚洲综合色| 亚洲日本中文字幕天天更新| 嫩草影院在线免费观看| 亚洲国产一区二区三区在线观看| 亚色九九九全国免费视频| 亚洲一区二区免费视频| 午夜dj免费在线观看| 麻豆亚洲AV永久无码精品久久 | 亚洲AV无码久久精品成人| 免费无遮挡无码永久视频| 亚洲精品视频免费观看| 亚洲一本一道一区二区三区| 国产成人在线免费观看| 亚洲情A成黄在线观看动漫软件 | 亚洲av永久无码精品古装片| 91视频免费网址| 亚洲精品国产综合久久久久紧 | 毛片免费全部播放无码| 亚洲熟妇无码一区二区三区| 亚洲精品国产高清不卡在线| 免费国产成人午夜在线观看| 亚洲成A∨人片天堂网无码| 亚洲综合一区二区三区四区五区| 亚洲av无码国产精品色在线看不卡| 两个人看的www高清免费观看| av在线亚洲欧洲日产一区二区| 成全高清在线观看免费|