分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

9 ??文件上传和下载

发布时间:2023-09-06 01:42责任编辑:董明明关键词:文件上传
1.文件上传

 ?????1.修改表单的enctype: <form action="" method="post" ????????enctype="multipart/form-data"> ??修改后servlet就不能通过req.getParameter("参数名")接受请求参数了 ?????2.导入jar包: ???????commons-fileupload-1.2.2.jar ???commons-io-1.4.jar ?????3.检查method和contentType ???????????boolean isMultipart=ServletFileUpload.isMultipartContent(req); ???????if(!isMultipart){ ????????????return; ?????????} ?????4.创建处理FileItem的工厂对象 ?????FileItemFactory factory=new DiskFileItemFactory(); ?????创建处理文件上传的处理器对象 ??????ServletFileUpload upload=new ServletFileUpload(factory); ??????解析请求对象 ??????List<FileItem> items=upload.parseRequest(req); ??????for(FileItem fileItem:items){ ??????????String fieldName=fileItem.getFiledName(); ??????if(fileItem.isFormField()){ ????????????????String fileName=fileItem.getString("utf-8"); ??????}else{ ??????????String fileName=fileItem.getName(); ??????????String contentType=fileItem.getContentType(); ??????????String realPath=super.getServltContext().getRealPath("/upload"); ??????????fileItem.write(new File(realPath+"/"+fileName)); ??????} ??????} ??????5.文件名处理 ??????使用UUID当做文件名称 ??????String uuid=UUID.randomUUID().toString(); ??????String extension=FilenameUtils.getExtension(fileName); ??????fileName=uuid+"."extension; ??????6.缓存大小和临时目录 ????????设置缓存大小: ???????factory.setSizeThreshold(500*1024); ????设置临时目录: ???????factory.setRepository(new File(""));

2.使用注解上传文件

 ?@MultipartConfig ????可以通过req.getParamter()接受参数 接受上传文件 ?Part part=req.getPart(""); ?part.write(realPath+"/"+name);

3.文件下载

 ?接受请求参数: ?????String fileName=req.getParameter("fileName"); ?fileName=new String(fileName.getBytes("ISO-8859-1"),"utf-8"); 找到资源的位置,读取到内存,响应给浏览器: ?????String realPath=super.getServletContext().getRealPath(""); ?String filePath=realPath+"\\"+fileName; ?ServletOutputStream out=resp.getOutputStream(); ?//设置响应头 ??resp.setContenType("application/x-msdownload"); //获取请求头信息Use-Agent ????String userAgent=req.getHeader("User-Agent"); if(userAgent.contain("MSIE")){ ???//IE ???fileName=URLEncoder.encode(fileName,"utf-8"); }else{ //W3C ???fileName=new String(fileName.getBytes("utf-8"),"ISO-8859-1"); } //设置下载的文件名称 resp.setHeader("Content-Disposition","attachment;fileName="+fileName); //将数据响应到浏览器 Files.copy(Paths.get(filePath),out);

9 ??文件上传和下载

原文地址:http://blog.51cto.com/10913595/2071340

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved