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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。