实现的思路:
工具:MySQL,eclipse
首先,在MySQL中创建了两个表,一个t_user表,用来存放用户名,密码等个人信息,一个t_touxiang表,用来存放上传的图片在服务器中的存放路径,以及图片名字和用户ID,T_touxiang表中的用户ID对应了t_user中的id。
t_user表SQL:
DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` int(10) NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL, `password` varchar(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) ) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
T_touxiang表SQL:
DROP TABLE IF EXISTS `t_touxiang`; CREATE TABLE `t_touxiang` ( `id` int(10) NOT NULL AUTO_INCREMENT, `image_path` varchar(255) DEFAULT NULL, `user_id` int(11) DEFAULT NULL, `old_name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), KEY `img_user` (`user_id`), CONSTRAINT `img_user` FOREIGN KEY (`user_id`) REFERENCES `t_user` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
首先,写一个UploadServlet.java,用来处理图片文件的上传,并将图片路径,图片名称等信息存放到t_touxiang数据表中,代码如下:
@WebServlet("/UploadServlet.do") public class UploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void service(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(); // System.out.println(System.getProperty("java.io.tmpdir"));//默认临时文件夹 // 2. 创建ServletFileUpload对象,并设置上传文件的大小限制。 ServletFileUpload sfu = new ServletFileUpload(factory); sfu.setSizeMax(10 * 1024 * 1024);// 以byte为单位 不能超过10M 1024byte = // 1kb 1024kb=1M 1024M = 1G sfu.setHeaderEncoding("utf-8"); // 3. // 调用ServletFileUpload.parseRequest方法解析request对象,得到一个保存了所有上传内容的List对象。 @SuppressWarnings("unchecked") List<FileItem> fileItemList = sfu.parseRequest(request); Iterator<FileItem> fileItems = fileItemList.iterator(); // 4. 遍历list,每迭代一个FileItem对象,调用其isFormField方法判断是否是上传文件 while (fileItems.hasNext()) { FileItem fileItem = fileItems.next(); // 普通表单元素 if (fileItem.isFormField()) { String name = fileItem.getFieldName();// name属性值 String value = fileItem.getString("utf-8");// name对应的value值 System.out.println(name + " = " + value); } // <input type="file">的上传文件的元素 else { String fileName = fileItem.getName();// 文件名称 System.out.println("原文件名:" + fileName);// Koala.jpg String suffix = fileName.substring(fileName.lastIndexOf('.')); System.out.println("扩展名:" + suffix);// .jpg // 新文件名(唯一) String newFileName = new Date().getTime() + suffix; System.out.println("新文件名:" + newFileName);// image\1478509873038.jpg // 5. 调用FileItem的write()方法,写入文件 File file = new File("D:/lindaProjects/mySpace/wendao/WebContent/touxiang/" + newFileName); System.out.println(file.getAbsolutePath()); fileItem.write(file); // 6. 调用FileItem的delete()方法,删除临时文件 fileItem.delete(); /* * 存储到数据库时注意 1.保存源文件名称 Koala.jpg 2.保存相对路径 * image/1478509873038.jpg * */ if (user != null) { int myid = user.getId(); String SQL = "INSERT INTO t_touxiang(image_path,user_id,old_name)VALUES(?,?,?)"; int rows = JdbcHelper.insert(SQL, false, "touxiang/" + newFileName, myid, fileName); if (rows > 0) { session.setAttribute("image_name", fileName); session.setAttribute("image_path", "touxiang/" + newFileName); response.sendRedirect(request.getContextPath() + "/upImage.html"); } else { } } else { session.setAttribute("loginFail", "请登录"); response.sendRedirect(request.getContextPath() + "/login.html"); } } } } catch (FileUploadException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } }
在完成图片上传并写入数据库的同时,将图片路径通过session的方式发送到HTML界面
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>更换头像</title> </head> <body> <formaction="UploadServlet.do" method="post"enctype="multipart/form-data"> 本地目录:<inputtype="file" name="uploadFile"> <img src="/static/imghwm/default1.png" data-src="${image_path}" class="lazy" style="max-width:90%" style="max-width:90%" alt="Java는 서버에 사진 업로드를 구현합니다." > <inputtype="submit" value="上传头像"/> </form> </body> </html>
至此,图片上传数据库和本地服务器已经实现。
推荐教程:java入门教程
위 내용은 Java는 서버에 사진 업로드를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음
