<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
     
    主站蜘蛛池模板: 好男人视频在线观看免费看片| 国产成人免费片在线视频观看| 中文字幕在线日亚洲9| 午夜亚洲国产成人不卡在线| 两个人看的www免费高清 | 99亚偷拍自图区亚洲| 亚洲AV伊人久久青青草原| 99免费视频观看| 黄色网址免费在线| 亚洲色成人网一二三区| 一本久久综合亚洲鲁鲁五月天| 久久国产免费观看精品3| 黄色大片免费网站| 亚洲国产美女福利直播秀一区二区| 亚洲国产成人精品无码久久久久久综合 | caoporn成人免费公开| 亚洲成a人片毛片在线| 亚洲A丁香五香天堂网 | 亚洲AV无码一区二区二三区软件| 成人免费视频试看120秒| 久久er国产精品免费观看2| 爱爱帝国亚洲一区二区三区| 亚洲黄色免费电影| 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 国产h视频在线观看网站免费| www在线观看免费视频| 亚洲日韩av无码中文| 亚洲国产精品第一区二区| 亚洲国产一区明星换脸| 国内大片在线免费看| 毛片免费全部播放无码| 日本黄色动图免费在线观看| 九九久久国产精品免费热6 | 久久国产精品成人免费| 免费人成网站永久| 亚洲精品无码久久久久YW| 亚洲成在人线电影天堂色| 久久亚洲精品成人AV| 国产精品亚洲精品日韩已满| 亚洲精品无码99在线观看| 又色又污又黄无遮挡的免费视|