广告
返回顶部
首页 > 资讯 > 精选 >Javaweb怎么实现头像上传及读取显示
  • 899
分享到

Javaweb怎么实现头像上传及读取显示

2023-07-02 12:07:47 899人浏览 泡泡鱼
摘要

本篇内容主要讲解“javaweb怎么实现头像上传及读取显示”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaWEB怎么实现头像上传及读取显示”吧!思路:如果要上传头像并要显示的话,可以创建一

本篇内容主要讲解“javaweb怎么实现头像上传及读取显示”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaWEB怎么实现头像上传及读取显示”吧!

思路:

如果要上传头像并要显示的话,可以创建一个工具类来将获取的头像另外复制一份放在工程目录下,并修改其文件名(防止名字相同有冲突)。
2.要创建表,另一个img表用于存放该学生的头像的存储路径、头像名称、以及该学生对应的ID。
3.在html页面中可通过设置表单在获取信息,注意的是由于表单的enctype属性要设为"multipart/fORM-data",设置为该属性可以上传文件。
4.创建servlet来对数据进行封装,进行将数据添加数据库中,并将信息发送给页面

步骤:1.先将两个表给创建出来。这里我使用mysql进行创建,注意的是user的学号要和Img的学号用外键关联。

创建Img表

CREATE TABLE `img` (  `id` int(4) NOT NULL AUTO_INCREMENT,  `image_path` varchar(255) DEFAULT NULL,  `old_name` varchar(255) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8

创建完数据库后,先将前台的html设计好,设置表单来获取用户填写的信息。

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <!-- Jquery (Bootstrap 的所有 javascript 插件都依赖 jQuery,所以必须放在前边) -->    <script src="js/jquery-2.1.0.min.js"></script></head><body>    <form action="addimgServlet"  method="post"  accept-charset="utf-8" enctype="multipart/form-data">        <div >            <img src="" width="150" height="150" id="previewimg">        </div>        <div >            <input type="file" id="img" name="img" onChange="preview(this)"/>            <span class="add">+</span>        </div>        <input  type="submit" id="submit_content" value="发布">    </form></body><script type="text/javascript">    function preview(obj){        var img = document.getElementById("previewimg");        img.src = window.URL.createObjectURL(obj.files[0]);    }</script></html>

创建一个工具类Fileupload.java,用于获取并处理表单中的数据。

import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;import javax.servlet.Http.httpservletRequest;import java.io.File;import java.util.*;public class FileUpload {    private static final long serialVersionUID = 1L;    public Map<String,String> File_upload(HttpServletRequest request,String filepath) {        //判断上传的表单是否为multipart/form-data类型        if (ServletFileUpload.isMultipartContent(request)) {            try {                //1.创建DiskFileItemFactory对象,设置缓冲区大小和临时目录文件                DiskFileItemFactory factory = new DiskFileItemFactory();                //2.创建ServletFileUpload对象,并设置上传文件的大小限制                ServletFileUpload sfu = new ServletFileUpload(factory);                sfu.setSizeMax(10 * 1024 * 1024);//以byte为单位 1024byte->1KB*1024=1M->1M*10=10M                sfu.setHeaderEncoding("utf-8");                //3.调用ServletFileUpload.parseRequest方法来解析对象,得到一个保存了所有上传内容的List对象                List<FileItem> fileItemList = sfu.parseRequest(request);                Iterator<FileItem> fileItems = fileItemList.iterator();                //创建一个Map集合,用于添加表单元素                Map<String, String> map = new TreeMap<String, String>();                //4.遍历fileItems,每迭代一个对象,调用其isFormField方法判断是否是上传文件                while ((fileItems.hasNext())) {                    FileItem fileItem = fileItems.next();                    try{                        //普通的表单元素                        if (fileItem.isFormField()) {                            String name = fileItem.getFieldName();//name的属性值                            String value = fileItem.getString("utf-8");//name对应的value值                            //添加进Map集合中                            map.put(name, value);                        } else {//否则即为<input type="file">上传的文件                            if(fileItem.getName()==null||fileItem.getFieldName()==null){                                map.put("fileName","empty");                                map.put("newFileName","empty");                            }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                                //将文件名存入到数组中                                map.put("fileName", fileName);                                map.put("newFileName", newFileName);                                // 5. 调用FileItem的write()方法,写入文件                                String context = filepath+newFileName ;                                System.out.println("图片的路径为"+context);                                File file = new File(context);                                System.out.println(file.getAbsolutePath());                                fileItem.write(file);                                //判断该文件是否为head_img下默认的头像,如果不是才执行删除                                if(!fileName.contains("empty")|| !newFileName.contains("empty")){                                    // 6. 调用FileItem的delete()方法,删除临时文件                                    fileItem.delete();                                }                            }                        }                    }catch (StringIndexOutOfBoundsException e ){                        //若为空指指针                        //未上传图片则按原来的图片显示                        //设置为false,在进行数据库操作时不对图片进行操作                        System.out.println("出现异常");                        map.put("fileName","empty");                        map.put("newFileName","empty");                        e.printStackTrace();                    }                }                return map;            } catch (FileUploadException e) {                e.printStackTrace();            } catch (Exception e) {                e.printStackTrace();            }        }        return  null;    }}

创建对应的servlet来处理用户添加的信息以及将数据分别存入到数据库中

注意:在这里添加信息到数据库中的操作和创建user对象是我在创建一个方法来实现,到时可根据自己的方法来实现方法

package domain;public class Img {   private String fileName;   private String newFileName;    public String getFileName() {        return fileName;    }    public void setFileName(String fileName) {        this.fileName = fileName;    }    public String getNewFileName() {        return newFileName;    }    public void setNewFileName(String newFileName) {        this.newFileName = newFileName;    }    @Override    public String toString() {        return "Img{" +                "fileName='" + fileName + '\'' +                ", newFileName='" + newFileName + '\'' +                '}';    }}
package servlet;import dao.UserDaoImpl;import domain.Img;import org.apache.commons.beanutils.BeanUtils;import util.FileUpload;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.lang.reflect.InvocationTargetException;import java.util.Map;@WebServlet("/addimgServlet")public class addimgServlet extends HttpServlet {    //为类可持久化    private static final long serialVersionUID = 1L;    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        request.setCharacterEncoding("utf-8");        //通过工具类获取成员的信息        String file = getServletContext().getRealPath("/head_img/");        Map<String,String> map = new FileUpload().File_upload(request,file);        //创建img对象用来封装数据        Img img = new Img();        try {            BeanUtils.populate(img,map);        } catch (IllegalAccessException e) {            e.printStackTrace();        } catch (InvocationTargetException e) {            e.printStackTrace();        }        System.out.println("servlet获取的img数据为:"+img);        //创建service对象将头像数据存入到表中        UserDaoImpl userDao  = new UserDaoImpl();        userDao.addimg(img);    }    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        this.doPost(request, response);    }}

==========================

package servlet;import com.fasterxml.jackson.databind.ObjectMapper;import dao.UserDaoImpl;import domain.Head_img;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet("/getimgServlet")public class getimgServlet extends HttpServlet {    //为类可持久化    private static final long serialVersionUID = 1L;    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        UserDaoImpl userDao = new UserDaoImpl();        Head_img img = userDao.getimg(Integer.parseInt(request.getParameter("id")));        System.out.println("获取的图象的路径为:"+img);        ObjectMapper mapper = new ObjectMapper();        response.setContentType("application/JSON;charset=utf-8");        mapper.writeValue(response.getOutputStream(),img);    }    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        this.doPost(request, response);    }}

最后,在userlList.html中接收信息并显示出来

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>显示图片</title>    <script src="js/jquery-2.1.0.min.js"></script>    <script>        function GetRequest() {            var url = location.search; //获取url中"?"符后的字串            var theRequest = new Object();            if (url.indexOf("?") != -1) {                var str = url.substr(1);                strs = str.split("&");                for ( var i = 0; i < strs.length; i++) {                    theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);                }            }            return theRequest;        }        $(function () {            $.get("getimgServlet",{id:GetRequest()["id"]},function (data) {                $("#imgid").attr("src",data.image_path);            })        })    </script></head><body>    <h4>图片</h4>    <img width="150" height="150" id="imgid"></body></html>

实现后效果如下

Javaweb怎么实现头像上传及读取显示

Javaweb怎么实现头像上传及读取显示

此时打开数据库便发现添加了该图片对应的数据

Javaweb怎么实现头像上传及读取显示

如何根据对应的id来获取图片的路径并显示出来

Javaweb怎么实现头像上传及读取显示

到此,相信大家对“Javaweb怎么实现头像上传及读取显示”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Javaweb怎么实现头像上传及读取显示

本文链接: https://www.lsjlt.com/news/341842.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Javaweb怎么实现头像上传及读取显示
    本篇内容主要讲解“Javaweb怎么实现头像上传及读取显示”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Javaweb怎么实现头像上传及读取显示”吧!思路:如果要上传头像并要显示的话,可以创建一...
    99+
    2023-07-02
  • Java web实现头像上传以及读取显示
    最近在做一个学生的信息管理系统,其中就有一个功能是要上传头像以及实现显示的功能,那么要如何实现呢? 思路: 1.如果要上传头像并要显示的话,可以创建一个工具类来将获取的头像另外复制一...
    99+
    2022-11-13
  • C#借助OpenCvSharp读取摄像头并显示的实现示例
    1,首先要安装OpenCvSharp,使用cv2的函数获取设备,并将图像转换到Bitmap using OpenCvSharp; using OpenCvSharp.Exte...
    99+
    2022-11-13
  • 怎么使用PHP实现用户头像上传功能
    这篇文章将为大家详细讲解有关怎么使用PHP实现用户头像上传功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。补充:什么是switch语句,以及它适用于哪些地方?简单的说switch语句也是属于判断语句,i...
    99+
    2023-06-15
  • Java怎么通过JSP实现头像自定义上传
    今天小编给大家分享一下Java怎么通过JSP实现头像自定义上传的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。开发环境整体使用...
    99+
    2023-07-04
  • java怎么实现图片上传并显示
    在Java中实现图片上传并显示的一种常见的方法是使用Servlet和JSP。下面是一个简单的示例代码: 创建一个Servlet类来...
    99+
    2023-10-24
    java
  • 怎么利用nodeJS+vue图片上传实现更新头像
    本篇内容主要讲解“怎么利用nodeJS+vue图片上传实现更新头像”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么利用nodeJS+vue图片上传实现更新头像”吧!思路:前端通过el-uplo...
    99+
    2023-06-30
  • C#+EmguCV怎么实现使用摄像头读取、保存视频
    这篇文章主要介绍“C#+EmguCV怎么实现使用摄像头读取、保存视频”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#+EmguCV怎么实现使用摄像头读取、保存视频”文章能帮助大家解决问题。在Emg...
    99+
    2023-06-29
  • Electron怎么实现调用外接摄像头并拍照上传
    这篇文章主要介绍了Electron怎么实现调用外接摄像头并拍照上传的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Electron怎么实现调用外接摄像头并拍照上传文章都会有所收获,下面我们一起来看看吧。背景基于E...
    99+
    2023-07-05
  • Vue vant-ui怎么使用van-uploader实现头像上传功能
    本篇内容主要讲解“Vue vant-ui怎么使用van-uploader实现头像上传功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue vant-ui怎么使用van-u...
    99+
    2023-06-30
  • 怎么用cropper.js和exif.js实现头像上传缩放裁剪旋转
    本篇内容主要讲解“怎么用cropper.js和exif.js实现头像上传缩放裁剪旋转”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用cropper.js和exif.js实现头像上传缩放裁剪旋...
    99+
    2023-06-29
  • jQuery插件ImgAreaSelect怎么实现头像上传预览和裁剪功能
    本文小编为大家详细介绍“jQuery插件ImgAreaSelect怎么实现头像上传预览和裁剪功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“jQuery插件ImgAreaSelect怎么实现头像上传预览和裁剪功能”文章能帮助大家解决疑惑...
    99+
    2023-06-04
  • Java中怎么实现上传文件动态显示进度
    Java中怎么实现上传文件动态显示进度,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.单例:用于保存进度信息;2.上传ser...
    99+
    2022-10-19
  • c++怎么结合opencv实现读取多张图片并显示
    这篇文章主要介绍“c++怎么结合opencv实现读取多张图片并显示”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“c++怎么结合opencv实现读取多张图片并显示”文章能帮助大家解决问题。方法一主要函...
    99+
    2023-07-04
  • 怎么用PHP+Ajax实现无刷新上传头像图片预览功能
    这篇文章主要讲解了“怎么用PHP+Ajax实现无刷新上传头像图片预览功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用PHP+Ajax实现无刷新上传头...
    99+
    2022-10-18
  • ajax怎么实现上传图片保存到后台并读取
    这篇文章主要介绍ajax怎么实现上传图片保存到后台并读取,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!上传图片有两种方式:fileReader  可以把图片解析成base64码的格式,简单粗暴canvas&...
    99+
    2023-06-08
  • js怎么利用FileReader实现图片转base64格式并上传预览头像
    今天小编给大家分享一下js怎么利用FileReader实现图片转base64格式并上传预览头像的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一...
    99+
    2023-06-30
  • 怎么用Springboot+vue实现图片上传至数据库并显示
    今天小编给大家分享一下怎么用Springboot+vue实现图片上传至数据库并显示的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2023-07-06
  • vue+element-ui+axios多文件上传怎么实现并显示整体进度
    今天小编给大家分享一下vue+element-ui+axios多文件上传怎么实现并显示整体进度的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一...
    99+
    2023-06-29
  • 怎么使用vue+element-plus实现上传图片、回显问题及数量限制
    这篇文章主要介绍“怎么使用vue+element-plus实现上传图片、回显问题及数量限制”,在日常操作中,相信很多人在怎么使用vue+element-plus实现上传图片、回显问题及数量限制问题上存在疑惑,小编查阅了各式资料,整理出简单好...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作