java上传图片到服务器,java实现图片的上传

  java上传图片到服务器,java实现图片的上传

  实现的思路:

  工具:MySQL,eclipse

  首先,在关系型数据库中创建了两个表,一个t _用户表,用来存放用户名,密码等个人信息,一个t _头象表,用来存放上传的图片在服务器中的存放路径,以及图片名字和用户ID,T_touxiang表中的用户身份对应了t _用户中的身份证。

  t _用户表SQL:

  如果存在" t _用户",则删除表;

  创建表` t_user `(

  ` id int(10)NOT NULL AUTO _ INCREMENT,

  ` username varchar(20)不为空,

  ` password varchar(255)不为空,

  主键(` id `),

  唯一键"用户名"("用户名")

  )ENGINE=InnoDB AUTO_INCREMENT=22默认字符集=utf8t _头象表SQL:

  如果存在“t _头象”,则删除表;

  创建表` t _头象`(

  ` id int(10)NOT NULL AUTO _ INCREMENT,

  ` image _ path varchar(255)默认为空,

  ` user _ id int(11)默认为空,

  ` old _ name varchar(255)默认为空,

  主键(` id `),

  关键字img_user` (`user_id `),

  约束` img _用户外键(`用户标识`)引用` t_user` (`id `)

  )ENGINE=InnoDB AUTO_INCREMENT=6默认CHARSET=utf8首先,写一个UploadServlet.java,用来处理图片文件的上传,并将图片路径,图片名称等信息存放到t _头象数据表中,代码如下:

  @WebServlet(/UploadServlet.do )

  公共类UploadServlet扩展HttpServlet {

  private static final long serialVersionUID=1L;

  受保护的空的服务(HttpServletRequest请求,HttpServletResponse响应)

  引发ServletException,IOException {

  //判断上传表单是否为多部分/表单数据类型

  http会话session=请求。getsession();

  用户User=(用户)会话。get属性(“用户”);//在登录时将用户对象放入了会话中

  如果(servlet文件上传。是multipartcontent(请求)){

  尝试{

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

  DiskFileItemFactory factory=new DiskFileItemFactory();

  //系统。出去。println(系统。getproperty( Java。io。tmpdir’);//默认临时文件夹

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

  ServletFileUpload sfu=新ServletFileUpload(工厂);

  sfu。setsizemax(10 * 1024 * 1024);//以字节为单位不能超过10M 1024字节=

  //1kb 1024kb=1M 1024M=1G

  sfu。setheaderencoding( utf-8 );

  //3.

  //调用ServletFileUpload.parseRequest方法解析请求对象,得到一个保存了所有上传内容的目录对象。

  @SuppressWarnings(未选中)

  ListFileItem fileItemList=sfu。解析请求(请求);

  迭代器文件项文件项=文件项列表。迭代器();

  //4.遍历列表,每迭代一个对象的工厂对象,调用其isFormField方法判断是否是上传文件

  while (fileItems.hasNext()) {

  FileItem FileItem=文件项目。next();

  //普通表单元素

  if (fileItem.isFormField()) {

  string name=fileitem。获取字段名();//名称属性值

  string value=fileitem。getstring( utf-8 );//名称对应的价值值

  系统。出去。println(名称=值);

  }

  //输入类型=文件的上传文件的元素

  否则{

  字符串fileName=fileitem。getname();//文件名称

  System.out.println(原文件名:文件名);//考拉. jpg

  字符串后缀=文件名。子字符串(文件名。lastindexof( . )));

  System.out.println(扩展名:后缀);//.使用联合图象专家组文件交换格式存储的编码图像文件扩展名

  //新文件名(唯一)

  字符串新文件名=新日期()。getTime()后缀;

  System.out.println(新文件名:新文件名);//image\1478509873038.jpg

  //5.调用对象的工厂的写()方法,写入文件

  File File=new File( D:/Linda projects/mySpace/闻道/web content/touxiang/新文件名);

  系统。出去。println(文件。getabsolutepath());

  fileItem.write(文件);

  //6.调用对象的工厂的删除()方法,删除临时文件

  fileitem。delete();

  /*

  * 存储到数据库时注意1.保存源文件名称Koala.jpg 2 .保存相对路径

  * image/1478509873038.jpg

  *

  */

  如果(用户!=null) {

  int myid=用户。getid();

  字符串SQL= INSERT INTO t _ touxiang(image _ path,user_id,old_name)值(?);

  int rows=JdbcHelper.insert(SQL,false, touxiang/ newFileName,myid,fileName);

  如果(第0行){

  会话。设置属性(图像名称,文件名);

  会话。设置属性( image _ path , touxiang/新文件名);

  回应。发送重定向(请求。getcontextpath()/up image。html’);

  }否则{

  }

  }否则{

  会话。设置属性(登录失败,请登录);

  回应。发送重定向(请求。getcontextpath()/登录。html’);

  }

  }

  }

  } catch (FileUploadException e) {

  e。printstacktrace();

  } catch(异常e) {

  e。printstacktrace();

  }

  }

  }

  }在完成图片上传并写入数据库的同时,将图片路径通过会议的方式发送到超文本标记语言界面

  !声明文档类型

  超文本标记语言

  头

  meta charset=UTF-8

  标题更换头像/标题

  /头

  身体

  for action= upload servlet。“do”method=“post”enctype=“multipart/form-data”

  本地目录:输入类型=文件名称=上传文件

  img src= $ { image _ path } width= 200 height= 200

  输入类型=提交值=上传头像/

  /表单

  /body

  /html至此,图片上传数据库和本地服务器已经实现。

  推荐教程:java入门教程以上就是爪哇岛实现图片上传至服务器的详细内容,更多请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: