首先需要准备两个包:commons-io-2.2.jar和commons-fileupload-1.3.3.jar

doPost:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//判断上传的表单是否为multipart/form-data类型

HttpSession session = request.getSession();

User user = (User)session.getAttribute("user"); //在登录时将User对象放入会话。

if(ServletFileUpload.isMultipartContent(request)) {

try{

//1.创建DiskFileItemFactory对象,设置缓冲区大小和临时文件

DiskFileItemFactory factory = new DiskFileItemFactory();

//2.创建ServletFileUpload对象,并设置上传文件大小限制

ServletFileUpload sfu = new ServletFileUpload(factory);

sfu.setFileSizeMax(10*1024*1024); //以byte为单位,不能超过10M

sfu.setHeaderEncoding("utf-8");

//3.调用ServletFileUpload.parseRequest方法解析request对象,得到一个保存了所有上传内容的List对象

@SuppressWarnings("unchecked")

List fileItemList = sfu.parseRequest(request);

Iterator fileItems = fileItemList.iterator();

//遍历list,没迭代一个FileItem对象,调用其isFormField方法判断是否上传文件

while(fileItems.hasNext()) {

FileItem fileItem = fileItems.next();

//普通表单元素

if(fileItem.isFormField()){

String name = fileItem.getFieldName();//name属性值

String value = fileItem.getString("utf-8");

System.out.println(name + "=" + value);

}else {

String fileName = fileItem.getName();//文件名称

System.out.println("原文件名:" +fileName);//.jpg

String suffix = fileName.substring(fileName.lastIndexOf('.'));

System.out.println("扩展名:" +suffix);

//新文件名(唯一)

String newFileName = new Date().getTime() +suffix;

System.out.println("新文件名:" + newFileName);

//5.调用FileItem的write()方法写入文件

File file = new File("E:/workspae1/pets/WebContent/images/" + newFileName);

System.out.println(file.getAbsolutePath());

try {

fileItem.write(file);

//6.调用FileItem的delete()方法,删除临时文件

fileItem.delete();

/*

* 存储数据库

*/

UserImage userImage = new UserImage();

if(user != null){

String username = user.getUsername();

userImage.updateimage("images/" + newFileName,username);

session.setAttribute("image_name", fileName);

session.setAttribute("image_path", newFileName);

}

response.sendRedirect(request.getContextPath()+"/perinfo.jsp");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}catch(FileUploadException e){

e.printStackTrace();

}

}

userImage.java中有个方法updateimage(String,String)。

我连接数据库的方式是用的mybatis,updateimage(String,String)方法实现了根据用户名更改图片路径。

html:

注意表单中必须加enctype="multipart/form-data"。

以上的方式可以实现图片上传到服务器,路径到数据库。每次上传需手动刷新数据库和webContent文件才能够显示出来。所以也就成了一个弊端,目前还在找解决办法。

commons-fileupload 上传图片路径到mysql_上传图片到服务器并将图片路径保存到数据库...相关推荐

  1. SpringMVC 上传图片保存到服务器 同时更改图片名称保存至数据库

    @RequestMapping("upload") public void upload(@RequestParam(value = "file", requi ...

  2. uniapp上传图片压缩并转base64码、base64转图片路径

    文章目录 一.上传图片压缩再转base64码 1.选择图片 [官方api](https://uniapp.dcloud.net.cn/api/media/image?id=chooseimage) 2 ...

  3. php图片保存在mysql_php实现上传图片保存到数据库的方法

    php实现上传图片保存到数据库的方法.分享给大家供大家参考.具体分析如下: php 上传图片,一般都使用move_uploaded_file方法保存在服务器上.但如果一个网站有多台服务器,就需要把图片 ...

  4. php实现上传图片保存到数据库的方法

    http://www.jb51.net/article/61034.htm 作者:傲雪星枫 字体:[增加 减小] 类型:转载 这篇文章主要介绍了php实现上传图片保存到数据库的方法,可通过将图片保存在 ...

  5. 数据库存储图片路径并显示到前端

    数据库存储图片路径并显示到前端 -为啥不直接存图片:因为图片本身太大了,虽然存取方便了程序员,但对数据库不友好.所以采取存取路径,再根据路径解析的方法. 一.数据库表设计: 从以上思想出发,需要存图片 ...

  6. vue组件读取static文件夹内json文件的图片路径问题

    static是放置静态文件的地方,可以我们也会把json文件放在里面,但是经常我们会遇到读取josn文件内图片路径的问题,这个问题困了我两天,今天一大早就又开始研究这个问题,现在终于得到了解决,关于这 ...

  7. 解决华为手机获取相册图片路径为null

    最近代码君遇到一个问题,在其他手机调用系统相册获取图片路径都是可以的,但是华为手机,执行相同代码,会报空指针异常,网上找了很多资料,都没什么实用的效果 Intent intent; intent = ...

  8. android华为获取相册,解决华为手机获取相册图片路径为null

    最近代码君遇到一个问题,在其他手机调用系统相册获取图片路径都是可以的,但是华为手机,执行相同代码,会报空指针异常,网上找了很多资料,都没什么实用的效果 Intent intent; intent = ...

  9. 织梦模板文章的图片路径问题

    1.pc端和移动端的公用一个模板后台时,移动端的网站是放在pc端的文件夹下面:这个时候的图片的路径是相对路径,需要修改成绝对路径,不然移动端找不到图片路径 方法: 打开织梦后台--->文件式管理 ...

最新文章

  1. Qt Creator连接iOS设备
  2. modbus 台达a2_驱控智造未来 台达重磅发布多款工业自动化新品
  3. 解决Ssh/Scp报错:Someone Could Be Eavesdropping On You Right Now (Man-In-The-Middle Attack)!
  4. ES6学习(六)—函数的扩展
  5. 信号与槽是如何实现的_铺天盖地的吐槽,结果却是卖到断货?iPhone12魅力何在?...
  6. 9月8日全球域名商(国际域名)解析新增量TOP20
  7. python pdf转html代码_Python3转换html到pdf的不同解决方案
  8. 5.2.8.字符设备驱动代码实践1
  9. Jasperreports TextField自动换行
  10. jfreeChart生成报表
  11. php 执行bat文件,bat执行PHP文件
  12. Win10文件无法重命名
  13. Radware深度解读肆虐全球的WannaCry勒索攻击
  14. 初中计算机实践研究计划,初中信息技术教研工作计划
  15. linux认证考试内容,Linux认证考试RHCE大纲
  16. ubuntu20.04启动时黑屏
  17. Ubuntu只读文件系统修复方法
  18. Python扩展包:Unofficial Windows Binaries for Python Extension Packages
  19. (软件工程视频总结)之软件测试
  20. 根据字符出现的频次排序

热门文章

  1. 实验2-2-8 阶梯电价 (15 分)
  2. PTA—考试座位号(C语言)
  3. opencv之图像边界填充-- copyMakeBorder
  4. 如何解决json中携带的反斜杠_【经验分享】python干货:5种反扒机制的解决方法...
  5. 电影推荐系统 python简书_分析9000部电影|一个简单的电影推荐系统
  6. 为什么中台是传统企业数字化转型的关键?
  7. 【笔记】jquery判断两个日期之间相差多少天
  8. style, currentStyle, getComputedStyle的区别
  9. Redis实现微博后台业务逻辑系列(八)
  10. 【git】git提交忽略不必要的文件或文件夹