分享web开发知识

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

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

图片上传技术实现

发布时间:2023-09-06 02:03责任编辑:彭小芳关键词:暂无标签

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的包,具体的你导包的时候就会发现有两个选项。

图片上传技术实现

原文地址:https://www.cnblogs.com/cxzm/p/9276288.html

知识推荐

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