<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。先去下這個包。然后接著下面?,F在知道了,很簡單。
    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
     
    主站蜘蛛池模板: 最近中文字幕大全免费视频| 免费国产作爱视频网站| 一本色道久久88亚洲综合 | av无码久久久久不卡免费网站| 国产精品亚洲а∨无码播放| 精品亚洲AV无码一区二区| 日韩毛片在线免费观看| 免费无码作爱视频| 亚洲乳大丰满中文字幕| a级片免费在线观看| 亚洲人成网www| 国产精品入口麻豆免费观看| 久久亚洲精品国产精品婷婷| 99re6免费视频| 亚洲人色婷婷成人网站在线观看| a国产成人免费视频| 久久精品国产亚洲av麻豆小说| 亚洲免费精彩视频在线观看| 亚洲片一区二区三区| 亚洲成a∧人片在线观看无码| **一级毛片免费完整视| 亚洲视频在线视频| 97无码免费人妻超级碰碰夜夜| 亚洲视频日韩视频| 一级毛片全部免费播放| 中文无码日韩欧免费视频| 亚洲AV无码一区二区二三区入口| 一级特黄aaa大片免费看| 亚洲va中文字幕无码久久| 无码中文在线二区免费| 一边摸一边桶一边脱免费视频 | 亚洲AV电影院在线观看| 两个人日本WWW免费版| 亚洲视频免费在线播放| 日韩a级毛片免费视频| 国内精品免费久久影院| 亚洲制服丝袜第一页| 在线精品免费视频| 亚洲国产精品无码久久九九大片| MM131亚洲国产美女久久| 69xx免费观看视频|