FileUpload实现文件上传下载3-修改文件名显示包含中文的文件
2013-05-14 00:13
513 查看
1.第一步:主页
上传下载<br/> <form action="<c:url value='/Upload2Servlet'/>" method="post" enctype="multipart/form-data"> 文件:<input type="file" name="txt"/><br/> 说明:<input type="text"name="desc"><br/> <input type="submit"value="上传"> </form>2.第二步:实现文件上传和下载
public class UploadServlet3 extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException { request.setCharacterEncoding("UTF-8"); DiskFileItemFactory disk = newDiskFileItemFactory();// 声明临时路径 disk.setRepository(new File("f:/tm"));// 设置临时路径 ServletFileUpload sfu = newServletFileUpload(disk);// 声明解析request的核心类 try { List<FileItem> files = sfu.parseRequest(request);// 解析request,每一个FileItem就是一个文件对象 Map<String,String> map = newHashMap<String, String>(); for (FileItem file : files){ if (file.isFormField()) {// 是一个简单值,即txt String desc = file.getString("UTF-8"); System.err.println("描述为:" + desc); map.put("desc", desc); }else{ // 如果是文件就上传 String path = getServletContext().getRealPath("/up");// 获取文件保存目录 String fileName = file.getName();// 获取文件名 fileName= fileName .substring(fileName.lastIndexOf("\\") + 1); System.err.println("原文件名:" + fileName); map.put("oldName",fileName); // 改名 String uuid = UUID.randomUUID().toString().replace("-", ""); String exName = fileName.substring(fileName .lastIndexOf(".") + 1); String newName = uuid + "." + exName; System.err.println("新文件名:" + newName); map.put("newName",newName); map.put("size", "" +file.getSize());// 文件大小 map.put("type",file.getContentType() + ""); // 使用工具类实现文件的copy FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path + "/" + newName)); // 删除临时文件 file.delete(); } } // 放到request中去 request.setAttribute("map", map); // 转发到显示页 request.getRequestDispatcher("/jsps/show.jsp").forward(request, response); }catch(FileUploadException e) { e.printStackTrace(); } } }3.显示页面
<body> <p>以下是你上传的内容</p> 文件名:${map.oldName}<br/> 大小:${map.size }<br/> 类型: ${map.type }<br/> 说明: ${map.desc }<br/> <c:choose> <c:when test="${fn:startsWith(map.type,'image/') }"> <img width="500"height="800" src="<c:url value='/up/${map.newName }'/>"></img> </c:when> <c:otherwise> <a href="<c:url value='up/${map.newName }'/>">下载</a> </c:otherwise> </c:choose></body>
相关文章推荐
- java基于Apache FTP实现文件上传、下载、修改文件名、删除
- 整理java文件下载(中文乱码、火狐浏览器乱码、空格变+号、文件名包含空格时文件名可能显示不全等问题)
- struts2 实现文件上传下载 (下载支持中文文件名)代码
- struts2 实现文件上传下载 (下载支持中文文件名)代码
- java上传下载文件,中文文件名不显示或乱码
- 使用Springmvc和commons-fileupload-1.2.2.jar实现上传文件时,中文文件名乱码
- FTPClient实现ftp的上传下载(包含中文文件名和中文路径问题)
- jsp+servlet+commons-fileupload-1.3.jar+commons-io-2.4.jar+jstl标签库实现文件上传与下载
- jsp实现文件下载与中文文件名乱码问题解决
- 使用FileUpload工具实现文件上传与使用ThreadLocal容器传递数据实现分页查询下载
- jsp实现文件下载与中文文件名乱码问题解决
- java实现文件下载 中文文件名乱码的解决
- 解决Asp.net 实现文件下载时、输出文件时文件名的中文乱码和空格异常
- Struts2 多个文件上传和下载(支持中文文件名)
- ASP.NET实现上传文件并修改其文件名
- JSF实现在动态表格中下载文件(支持中文文件名)
- Struts2和common的fileupload实现文件上传并显示实时进度
- SmartUpload上传下载及文件名和文件内容中文问题
- sharepoint 中用自带的download.aspx实现文件的下载,中文文件名编码的问题