文章标题

来源:互联网 发布:故宫淘宝有没有app 编辑:程序博客网 时间:2024/06/02 19:28

文件的上传下载与删除JavaEE(不通过数据库)

    <div class="article_manage clearfix">    <div class="article_r">        <span class="link_postdate">2016-06-12 19:51</span>        <span class="link_view" title="阅读次数">334人阅读</span>        <span class="link_comments" title="评论次数"> <a href="#comments" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_pinglun'])">评论</a>(1)</span>        <span class="link_collect tracking-ad" data-mod="popu_171"> <a href="javascript:void(0);" onclick="javascript:collectArticle('%e6%96%87%e4%bb%b6%e7%9a%84%e4%b8%8a%e4%bc%a0%e4%b8%8b%e8%bd%bd%e4%b8%8e%e5%88%a0%e9%99%a4JavaEE%ef%bc%88%e4%b8%8d%e9%80%9a%e8%bf%87%e6%95%b0%e6%8d%ae%e5%ba%93%ef%bc%89','51648626');return false;" title="收藏" target="_blank">收藏</a></span>         <span class="link_report"> <a href="#report" onclick="javascript:report(51648626,2);return false;" title="举报">举报</a></span>    </div></div><div class="embody" style="display:none" id="embody">    <span class="embody_t">本文章已收录于:</span>    <div class="embody_c" id="lib" value="{&quot;err&quot;:0,&quot;msg&quot;:&quot;ok&quot;,&quot;data&quot;:[]}"></div></div><style type="text/css">                .embody{            padding:10px 10px 10px;            margin:0 -20px;            border-bottom:solid 1px #ededed;                        }        .embody_b{            margin:0 ;            padding:10px 0;        }        .embody .embody_t,.embody .embody_c{            display: inline-block;            margin-right:10px;        }        .embody_t{            font-size: 12px;            color:#999;        }        .embody_c{            font-size: 12px;        }        .embody_c img,.embody_c em{            display: inline-block;            vertical-align: middle;                       }         .embody_c img{                           width:30px;            height:30px;        }        .embody_c em{            margin: 0 20px 0 10px;            color:#333;            font-style: normal;        }</style><script type="text/javascript">    $(function () {        try        {            var lib = eval("("+$("#lib").attr("value")+")");            var html = "";            if (lib.err == 0) {                $.each(lib.data, function (i) {                    var obj = lib.data[i];                    //html += '<img src="' + obj.logo + '"/>' + obj.name + "&nbsp;&nbsp;";                    html += ' <a href="' + obj.url + '" target="_blank">';                    html += ' <img src="' + obj.logo + '">';                    html += ' <em><b>' + obj.name + '</b></em>';                    html += ' </a>';                });                if (html != "") {                    setTimeout(function () {                        $("#lib").html(html);                                              $("#embody").show();                    }, 100);                }            }              } catch (err)        { }    });</script>  <div class="category clearfix">    <div class="category_l">       <img src="http://static.blog.csdn.net/images/category_icon.jpg">        <span>分类:</span>    </div>    <div class="category_r">                <label onclick="GetCategoryArticles('6268232','l6l6l','top','51648626');">                    <span onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_fenlei']);">JavaEE<em>(1)</em></span>                  <img class="arrow-down" src="http://static.blog.csdn.net/images/arrow_triangle _down.jpg" style="display:inline;">                  <img class="arrow-up" src="http://static.blog.csdn.net/images/arrow_triangle_up.jpg" style="display:none;">                    <div class="subItem">                        <div class="subItem_t"><a href="http://blog.csdn.net/l6l6l/article/category/6268232" target="_blank">作者同类文章</a><i class="J_close">X</i></div>                        <ul class="subItem_l" id="top_6268232">                                                    </ul>                    </div>                </label>                        </div></div><script type="text/javascript" src="http://static.blog.csdn.net/scripts/category.js"></script>      <div class="bog_copyright">                 <p class="copyright_p">版权声明:本文为博主原创文章,未经博主允许不得转载。</p>    </div>

前几天完成了一个的网站,在文件的上传、下载方面有一些感悟,想写下来和大家分享一下,希望对大家有用。整理了一下,以后自己用。
我之前对于文件的上传,都是把文件上传到数据库中,或者是存到服务器硬盘里,把链接存放到数据库里,这次通过查找一些资料,做了一些改进,没有与数据库联系。
这里采用了fileupload、io两个jar包(可以百度下载)。

管理员后台上传文件

package action;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;  public class UploadHandleServlet extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {                //得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全                String savePath = this.getServletContext().getRealPath("/WEB-INF/upload");                System.out.println(savePath);                File file = new File(savePath);               //判断上传文件的保存目录是否存在               if (!file.exists() && !file.isDirectory()) {                    System.out.println(savePath+"目录不存在,需要创建");                    //创建目录                    file.mkdir();                }                //消息提示                String message = "";                String name="";                String value="";                try{                    //使用Apache文件上传组件处理文件上传步骤:                    //1、创建一个DiskFileItemFactory工厂                    DiskFileItemFactory factory = new DiskFileItemFactory();                   //2、创建一个文件上传解析器                    ServletFileUpload upload = new ServletFileUpload(factory);                     //解决上传文件名的中文乱码                    upload.setHeaderEncoding("UTF-8");                     //3、判断提交上来的数据是否是上传表单的数据                    if(!ServletFileUpload.isMultipartContent(request)){                        //按照传统方式获取数据                       return;                    }                   //4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项                    List<FileItem> list = upload.parseRequest(request);                    for(FileItem item : list){                       //如果fileitem中封装的是普通输入项的数据                       if(item.isFormField()){                             name = item.getFieldName();                            //解决普通输入项的数据的中文乱码问题                            value = item.getString("UTF-8");                            //value = new String(value.getBytes("iso8859-1"),"UTF-8");输出用户名                            System.out.println(name + "=" + value);                        }else{//如果fileitem中封装的是上传文件                            //得到上传的文件名称,                            String filename = item.getName();                            if(filename==null || filename.trim().equals("")){                                continue;                           }                            //注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如:  c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt                            //处理获取到的上传文件的文件名的路径部分,只保留文件名部分                            filename = filename.substring(filename.lastIndexOf("\\")+1);                            //获取item中的上传文件的输入流                            InputStream in = item.getInputStream();                            //创建一个文件输出流                            FileOutputStream out = new FileOutputStream(savePath + "\\" + filename);                            //创建一个缓冲区                            byte buffer[] = new byte[1024];                           //判断输入流中的数据是否已经读完的标识                            int len = 0;                            //循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据                           while((len=in.read(buffer))>0){                               //使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(savePath + "\\" + filename)当中                                out.write(buffer, 0, len);                            }                            //关闭输入流                            in.close();                            //关闭输出流                            out.close();                            //删除处理文件上传时生成的临时文件                            item.delete();                        }                    }                }catch (Exception e)                    e.printStackTrace();                }                request.setAttribute("username",value);                request.getRequestDispatcher("admin/DataView.jsp").forward(request, response);    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {         doGet(request, response);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99

显示服务器中上传的文件

package action;import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ListServlet extends HttpServlet {   public void doGet(HttpServletRequest request, HttpServletResponse response)           throws ServletException, IOException {       //获取上传文件的目录       String uploadFilePath = this.getServletContext().getRealPath("WEB-INF/upload");       //存储要下载的文件名       Map<String,String> fileNameMap = new HashMap<String,String>();       //递归遍历filepath目录下的所有文件和目录,将文件的文件名存储到map集合中       listfile(new File(uploadFilePath),fileNameMap);//File既可以代表一个文件也可以代表一个目录       //将Map集合发送到listfile.jsp页面进行显示       request.setAttribute("fileNameMap", fileNameMap);       request.getRequestDispatcher("/admin/DataView.jsp").forward(request, response);   }   public void listfile(File file,Map<String,String> map){       //如果file代表的不是一个文件,而是一个目录       if(!file.isFile()){           //列出该目录下的所有文件和目录           File files[] = file.listFiles();           //遍历files[]数组           for(File f : files){               //递归               listfile(f,map);          }       }else{           String realName = file.getName().substring(file.getName().indexOf("_")+1);           //file.getName()得到的是文件的原始名称,这个名称是唯一的,因此可以作为key,realName是处理过后的名称,有可能会重复           map.put(file.getName(), realName);       }   }   public void doPost(HttpServletRequest request, HttpServletResponse response)           throws ServletException, IOException {       doGet(request, response);   }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51

管理员后台删除上传的文件

package action;import java.io.File;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class DeleteServlet extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        response.setContentType("text/html");        PrintWriter out = response.getWriter();        //得到要下载的文件名           String fileName = request.getParameter("filename");             fileName = new String(fileName.getBytes("iso8859-1"),"UTF-8");           //上传的文件都是保存在/WEB-INF/upload目录下的子目录当中           String fileSaveRootPath=this.getServletContext().getRealPath("/WEB-INF/upload");           //通过文件名找出文件的所在目录,存放路径           String path = this.getServletContext().getRealPath("/WEB-INF/upload");           //得到要下载的文件           File file = new File(path + "\\" + fileName);           if(file.isFile() && file.exists()){                    file.delete();                   response.sendRedirect("admin/DataView.jsp");                  System.out.println("删除单个文件"+fileName+"成功!");                }else{                     response.sendRedirect("admin/DataView.jsp");                  System.out.println("删除单个文件"+fileName+"失败!");                }         out.flush();        out.close();    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        response.setContentType("text/html");        PrintWriter out = response.getWriter();        doGet(request, response);        out.flush();        out.close();    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

用户下载文件

package frontaction;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStream;import java.net.URLEncoder;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class DownLoadServlet extends HttpServlet {   public void doGet(HttpServletRequest request, HttpServletResponse response)           throws ServletException, IOException {       //得到要下载的文件名       String fileName = request.getParameter("filename");         fileName = new String(fileName.getBytes("iso8859-1"),"UTF-8");       //上传的文件都是保存在/WEB-INF/upload目录下的子目录当中       String fileSaveRootPath=this.getServletContext().getRealPath("/WEB-INF/upload");       //通过文件名找出文件的所在目录,存放路径       String path = this.getServletContext().getRealPath("/WEB-INF/upload");       //得到要下载的文件       File file = new File(path + "\\" + fileName);       //如果文件不存在       if(!file.exists()){           request.setAttribute("message", "您要下载的资源已被删除!!");           request.getRequestDispatcher("/admin/message.jsp").forward(request, response);           return;       }       //处理文件名       String realname = fileName.substring(fileName.indexOf("_")+1);       //设置响应头,控制浏览器下载该文件       response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(realname, "UTF-8"));       //读取要下载的文件,保存到文件输入流       FileInputStream in = new FileInputStream(path + "\\" + fileName);       //创建输出流       OutputStream out = response.getOutputStream();       //创建缓冲区       byte buffer[] = new byte[1024];       int len = 0;       //循环将输入流中的内容读取到缓冲区当中       while((len=in.read(buffer))>0){           //输出缓冲区的内容到浏览器,实现文件下载           out.write(buffer, 0, len);       }       //关闭文件输入流       in.close();       //关闭输出流       out.close();   }   public String findFileSavePathByFileName(String filename,String saveRootPath){       int hashcode = filename.hashCode();       int dir1 = hashcode&0xf;  //0--15       int dir2 = (hashcode&0xf0)>>4;  //0-15       String dir = saveRootPath + "\\" + dir1 + "\\" + dir2;  //upload\2\3  upload\3\5       File file = new File(dir);       if(!file.exists()){           //创建目录           file.mkdirs();       }       return dir;   }   public void doPost(HttpServletRequest request, HttpServletResponse response)           throws ServletException, IOException {       doGet(request, response);   }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
(function () {('pre.prettyprint code').each(function () { var lines = (this).text().split(\n).length;varnumbering = $('
    ').addClass('pre-numbering').hide(); (this).addClass(hasnumbering).parent().append(numbering); for (i = 1; i
    0 0
    原创粉丝点击