标签:tor panel 文件路径 问题 factory tco border 前端 tail
1.参考网站:https://blog.csdn.net/snakemoving/article/details/71076165
2.具体实现
(1)、下载common-fileupload和common-io(百度搜索或去官网下载)
用servlet实现文件的上传,这里用到Apache的开源工具:common-fileupload。因为common-fileupload依赖于common-io,所以需要同时下载两个包。
(2)、将common-fileupload和common-io添加到工程下存放jar的库中
(3)、前端页面设计
1 <div class="panel border-back text-center" style="height: 340px"> 2 <br/> 3 <br> 4 <img alt="请上传个人图片" src="images/${fileName}" width="120" class="radius-circle" /> 5 <br> 6 <br> 7 <input type="text" name="fileName" value="${fileName}"> 8 <br> 9 <br> 10 <form action="FileUploadServlet" method="post" enctype="multipart/form-data"> 11 <input type="file" name="file"> 12 <br> 13 <input type="submit" value="上传"> 14 </form> 15 </div>
(4)、后端实现
DiskFileItemFactory dfi = new DiskFileItemFactory(); //获得上传文件的存储路径 String path; path = request.getServletContext().getRealPath("/images"); //设置文件大小超过1024*1024就写到disk上 dfi.setSizeThreshold(1024 * 1024); //设置存储的仓库 dfi.setRepository(new File(path)); //实例化一个servletFileUpload对象 ServletFileUpload sfu = new ServletFileUpload(dfi); //解决上传文件乱码问题 sfu.setHeaderEncoding("GBK"); try { List<FileItem> list = sfu.parseRequest(request); //取得session HttpSession session = request.getSession(); //遍历得到每个FileItem for (FileItem item : list) { //取得表单文本框的名字 String name = item.getFieldName(); //如果上传的是一个文件 //取得上传文件的名字,即上传框中的内容名字 String value = item.getName(); //因为在opera浏览器中文件上传item.geName()会得到具体路径而不止是名字,所以需要从路径中取出名字 //取得文件路径名字开始的位置 int start = value.lastIndexOf("\\"); //得到文件名 String fileName = value.substring(start + 1); //读取文件的内容 item.write(new File(path, fileName)); //存储数据 session.setAttribute(name, fileName); session.setAttribute("fileName", fileName);
3.注意
(1)、servlet中不能用request.getParameter("字段名")来获取表单的字段内容,因为表单的enctype="multipart/form-data",这里传输的是二进制,所以不能用`getParameter(“字段名”)获得。
获得字段名:
String name = item.getFieldName();
String value = item.getName();
(2)、注意你上传文件保存的路径和你img里src访问的路径要一致。
(3)、注意你导包是否正确,导commons的包不要导tomcat的包,具体的你导包的时候就会发现有两个选项。
标签:tor panel 文件路径 问题 factory tco border 前端 tail
原文地址:https://www.cnblogs.com/cxzm/p/9276288.html