javaweb文件上传与下载
来源:互联网 发布:淘宝的林国庆 编辑:程序博客网 时间:2024/05/20 06:08
文件传输的相关 设置
- form表单
提交方式: post
enctype属性的介绍:
Content-Type的类型扩充了multipart/form-data用以支持向服务器发送二进制数据。因此发送post请求时候,表单<form>属性enctype共有二个值可选,这个属性管理的是表单的MIME编码: 1.application/x-www-form-urlencoded(默认值) 2.multipart/form-dataenctype默认属性为:application/x- www-form-urlencoded
实例:
from表单:
<form action="/FileUpLoad/Aservlet" method="post" enctype="multipart/form-data"> 用户名:<input type="text" name="name"/><br> 头像: <input type="file" name="photo" /> <br> <input type="submit" value="上传"/> </form>
- 上传工具类的使用
介绍:
通常两个包一起用commons-fileupload-1.2.1.jarcommons-io-1.4.jar
在sevlet 中的使用:
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { DiskFileItemFactory factory = new DiskFileItemFactory(); //设置临时上传目录 位置 factory.setRepository(new File("E://temp")); //设置文件 写入 硬盘的缓冲区大小 => 默认值 10k factory.setSizeThreshold(10240); //创建解析器 ServletFileUpload upload = new ServletFileUpload(factory); //判断但钱请求 是否是多端式请求 upload.isMultipartContent(req); //设置多段 中每段 段头 在解析时,使用神马编码解码 == //=> 当段头中出现中文时,一定要调用该方式指定段头码表 upload.setHeaderEncoding("UTF-8"); upload.setSizeMax(1024*1024*10); //单次请求,总的上传限制 upload.setFileSizeMax(1024*1024); //每个文件的上传段,大小限制 try { fileItems = upload.parseRequest(req); if(fileItems!=null){ for (FileItem item : fileItems) { //是否为普通表单提交 boolean flag = item.isFormField(); //获取上传文件的 文件名 String name = item.getName(); //获取input 元素 name属性的值 String fName = item.getFieldName(); //已字符串 形式 返回 段体中的内容,注意:文件上传不建议使用该方法 // String content = item.getString(); //删除上传的临时文件 item.delete(); System.out.println("是否是普通表单提交"+flag); } } } catch (FileUploadException e) { e.printStackTrace(); } }
如何将上传文件分目录保存
1.使用登录用户的用户名 来创建不同的文件夹. 每个用户上传的文件就放到自己的文件夹中2.按照日期分目录=> d:/upload/2015/08/24/
InputStream is = item.getInputStream(); SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/"); String datePath = sdf.format(new Date()); String wholePath = "E:/upload"+datePath; File dir = new File(wholePath); if(!dir.exists()){ dir.mkdirs(); } FileOutputStream fos = new FileOutputStream(wholePath+UUID.randomUUID().toString()); IOUtils.copy(is, fos); fos.close();
乱码问题的解决
文件名称乱码 : Content-Disposition: form-data; name="name" 分段首行 乱码更正upload.setHeaderEncoding("UTF-8");文件内容乱码:item.getString("UTF-8")
解释:
文件下载
路径问题
乱码问题
1.得到表单中的内容有中文(get)
String fileName = req.getParameter("name"); fileName = new String(fileName.getBytes("ISO-8859-1"),"UTF-8");
- 1
- 2
- 1
- 2
2.下载的文件名称有中文
resp.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(fileName, "UTF-8"));
- 1
阅读全文
0 0
- JavaWeb 文件上传与下载
- JavaWeb文件上传与下载
- javaWEB文件上传与下载
- javaweb 文件上传与下载
- javaweb文件上传与下载
- javaweb文件上传与下载
- JavaWeb 文件上传与下载
- javaWeb实现文件上传与下载
- JavaWeb-文件的上传与下载
- 【javaweb源码】文件的上传与下载
- JavaWeb中的文件上传与下载
- javaWeb学习记录:文件上传与下载
- Javaweb文件的上传与下载
- javaWEB文件上传与下载(未测试)
- JavaWEB——文件上传与下载
- javaweb servlet文件的上传与下载
- JavaWeb-文件上传与下载(有改动)
- JavaWeb之文件上传与下载详解
- [BFS+康托展开]Hdu 1043 Eight
- GNU C 的一大特色__attribute__ 机制
- 哪个大夫哪天值班
- 有序广播
- BZOJ4999 JZOJ5112【usaco2017_Mar Platinum】Switch Grass
- javaweb文件上传与下载
- 重温《并发编程实战》---任务执行
- 静态资源过滤
- SpringMVC拦截器,json字符串输出,
- sql语句整理
- Angular基础1 在路由时传递参数的方法
- LeetCode 405. Convert a Number to Hexadecimal
- Java生成验证码
- Material Design风格折叠标题、沉浸式、抽屉等效果