<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
     
    主站蜘蛛池模板: 2022年亚洲午夜一区二区福利| 99精品免费观看| 24小时日本韩国高清免费| 亚洲免费一区二区| 久久亚洲精品无码av| 青草草色A免费观看在线| 香蕉视频在线观看亚洲| 国产免费人成视频在线播放播| 国产成人免费高清在线观看| 久久精品国产亚洲αv忘忧草| 性xxxxx大片免费视频| 伊人婷婷综合缴情亚洲五月| 一区二区免费国产在线观看| 又色又污又黄无遮挡的免费视| 亚洲乱理伦片在线观看中字| a毛片基地免费全部视频| 亚洲精品亚洲人成在线观看麻豆| **毛片免费观看久久精品| 理论亚洲区美一区二区三区| 免费国产不卡午夜福在线| 色欲A∨无码蜜臀AV免费播 | 久久亚洲精精品中文字幕| 免费视频精品一区二区三区 | 久久亚洲中文字幕精品有坂深雪| 在线免费观看一级片| 亚洲AV成人噜噜无码网站| 国产亚洲精品久久久久秋霞 | 亚洲国产一区国产亚洲 | 亚洲偷自拍拍综合网| a级片免费观看视频| 亚洲高清视频免费| 国产亚洲精品不卡在线| 最近免费中文字幕大全高清大全1 最近免费中文字幕mv在线电影 | 免费人成网站在线高清| 日本一区二区三区免费高清| 亚洲熟伦熟女专区hd高清| 免费va在线观看| 天天拍拍天天爽免费视频| 综合在线免费视频| 一级看片免费视频囗交| 亚洲黄色一级毛片|