Java基本概念-文件上传和下载

来源:互联网 发布:linux安装软件sudo 编辑:程序博客网 时间:2024/06/08 14:59
一 文件上传 
 1 在文件上传时必须将表单的提交方式设置为post,并设置表单的enctype的属性值为“multipart/form-data”
 2 使用Apache的commons-fileupload组件来完成文件上传,将commons-io包和commons-fileupload包放入到工程的lib目录中
 3 根据时间产生文件名避免上传重复的文件被覆盖
 4 ServletFileUpload 处理上传的文件的数据,优先保存在缓冲区,如果数据超过了缓冲区大小,则保存到硬盘上,存储在DiskFileItemFactory指定目录下的临时文件。数据都接收完后,它再在从临时文件中将数据写入到上传文件目录下的指定文件中,并删除临时文件。
 5 相关方法:
  (1)endWith(“xxx”):判断字符串是否以xxx字符串结尾
  (2)setSizeMax():服务器端可以接收的最大文件大小 
  (3)服务器绝对路径:String realpath = request.getSession().getServletContext().getRealPath("\\");
  (4)listFiles():得到目录下的所有文件和文件夹 
 6 为上传的文件建一个存放的位置,一般位置分为临时和真是文件夹 
二 下载文件 
 1 设置响应的MIMI类型         
     response.setContentType("application/force-download"); //提示下载弹出框 
     response.setHeader("Content-disposition","attachment; filename="+URLEncoder.encode(filename, "UTF-8")); //采用UTF-8编码
     response.addHeader("Content-Disposition", "attachment;filename="+filename);   //流的方式输出文件 
 2  欲下载的文件的路径。File file = new File(path);
    取得文件名。String filename = file.getName();
    取得文件的后缀名。String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();
    以流的形式下载文件。InputStream fis = new BufferedInputStream(new FileInputStream(path));
                        byte[] buffer = new byte[fis.available()];
                        fis.read(buffer);
                        fis.close();          
1 表单添加 enctype属性,使得文件以二进制形式上传,不添加时,上传文件为文本类型,request.getParameter(),只获取文本数据
2 服务端的上传组件会将每一个表单元素封装成一个FileItem对象,以循环的方式迭代每一个FileItem
3 FileItem.isFormFiled()方法判断FileItem是否是上传文件表单元素
0 0
原创粉丝点击