必赢亚洲手机app下载


程序员的生存

why “伊夫rything” is so fast?

至于上传和下载的笔记

上传:  

要求:1.表单的method必须是post  

    2.表述扩充enctype=”multipart/form-data”  

    3.input标签的type属性的值是file

 Servlet具体方法:

    1.创制工厂:DiskFileItemFactory=new DiskFileItemFactory();

 2.成立解析器:ServletFileUpload sfu=new ServletFileFactory(factory);  

3.接纳List<FileItem>从解析器得到文件:List<FileItem>
list=sfu.ParseRequest(request);  

4.得以按照FileItem的getName()获得文件的名称:FileItem
fl=list.get(index);  String filename=fl.getName();  

5.保存文件:File file=new File(“文件路径”);  

6.fl.write(file);

 =================================================

 基本步骤大概这么  

=================================================

 但是—————-》》》》》》》

 我们要求考虑部分细节:

 1.上传文件的编码难题   有二种方法得以化解:  

   1):request.setCharacterEncoding(“utf-8”);    

    2):通过解析器的sfu.setHeaderEncoding(“utf-8”)方法解决
  注意:当同时采纳二种艺术时,fu.setHeaderEncoding(“utf-8”)具有优先级,会覆盖                request.setCharac terEncoding(“utf-8”); 

 

 2.由于用户上传的文书带有路径,如何截取文件的名字啊?
  日常在用户上传文件时会带有路径,比如:F:/demp/file/movies/AAA.txt,那么大家就只要求AAA.txt而不要求事先的音讯,解决办法如下:

  比方说大家保存F:/demp/file/movies/AAA.txt的变量为filename,那么    int
index=filename.lastIndexof(“\\”);[那儿请小心是”\\”,切记!]
   if(index!=-1){     filename=filename.substring(index+1);    }  

 

3.保存文件的时候保存的职位
  首先大家不能够平素把公文保留在祥和的磁盘上吧!不要问我为啥。肯定是要放在服务器上的,那么我们理应保留在哪个地方吗?最好是在WEB-INF目录下新建一个文件夹,比如身为files,切不可保存在webroot下,理由:不想说,然则我愿意您如此做!!
  怎样保存呢?可以那样:   String
root=this.getServletContext().getRealPath(“/WEB-INF/files/”);

 

 4.当用户上传的文本过大时,怎样处理难题直接保存在服务器?
  在此次磁盘上成立一个临时的文本夹,用于临时保存用户的文件,当文件上传文件成功后服务器会活动将其保存到files里面。

  完结方式:DiskFileItemFactory factory=new
DiskFileItemFacoty(1024*10,new File(“F:/temp”));

  注意:1024*10象征上传的文书超越了10kb的时候就会停放临时文件夹,否则不会,可以任由改的,10KB也是默认的
  new File(“F:/temp”)就不用说了呢,,,指定临时文件夹
 4.什么样对用户上传的文件大小限制
  可以用解析器sfu的sf.setFileSize马克斯(fileSize马克斯)和sf.setSize马克斯(fileSize马克斯)方法解决,前者是单个文件限制,后者是表单文件大小限制
 

 

5.保存文件的时候怎么处理同名问题  一般是在文件名的眼前加上一个前缀,前缀肯定是绝无仅有的嘛。具体已毕和谐看着办啊

 

 6.文件的储存方法(不可能在一个文件夹储存过多文件,否则会卡的,若是不信可以把您电脑的文件全体位于一个文本夹试试,你就逐步打开吧)
  我此前是在WEB-INF下创设了一个files文件夹,可是不可以抱有的公文都放在此处吧,
 

 我们平常有三种方式处理此类难题:

  1.时间打散:      

 2.哈希打散    

  由于这次项目自身使用的是哈希打散,所以我详细的介绍一下这么些办法:

   1).int code=filename.hashcode();//依据文件名称得到一个int类型的数字
  String
hex=Integr.setHexString(code);//根据该数字得到一个16进制的字符串

   2).依据创立的files文件夹和hex随机生成文书夹,比如是八个级其他文书夹:
   File dirFile=new
File(root,hex.charAt(0)+”/”+hex.charAt(1));(root是第三步写的,没在意可以看)

   3).然后实施dirFile.mkdirs()方法,创设八个文件夹【注意是mkdirs()不是mkdir(),差别不解释】

   4).File deskFile=new File(dirfile, 有前缀的公文名);

   5).最后,保存:file.write(deskFile);//保存

下载:

 记住一句话:多个头一个流

 两个头:

 Content-Type:

       /*收获文件的MIME类型*/   

    String
contentType=this.getServletContext().getMimeType(filename);   

 Content-Dispostion:   String
contentDisposition=”attachmentDisposition;filename=”+filename;

 

 response.setHeader(“Content-Type”, contentType);  

response.setHeader(“Content-Disposition”, contentDisposition);  

 

一个流:文件流   FileInputStream input=new FileInputStream(file);

  步骤就背着了,最后记得关闭流就可以了!!!

 

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图