精华内容
下载资源
问答
  • java实现头像上传功能

    2021-04-12 13:11:30
    java模拟头像上传功能 File && Reader package File; import java.io.*; import java.util.Scanner; /* * 模拟上传头像 * */ /* 1.定义一个方法获取文件路径 2.定义方法判断用户头像在指定文件中是否...

    java模拟头像上传功能
    File && Reader

    package File;
    
    import java.io.*;
    import java.util.Scanner;
    
    /*
    * 模拟上传头像
    * */
    
    /*
        1.定义一个方法获取文件路径
        2.定义方法判断用户头像在指定文件中是否存在
        3.图片存在,重新上传 图片不存在,开始上传
    
      */
    public class UpLoadFile {
        public static void main(String[] args) throws IOException {
    //        获取
            File fg = getPath();
    //        判断段存在否
            Boolean flag  =  isExist(fg.getName());
    //        若是存在 提示
            if (flag) {
                System.out.println("头像已存在,上传失败");
            }else{
                System.out.println("马上上传");
                uploadFile(fg);
    
            }
    
    
        }
    
    //        1.定义一个方法获取文件路径
        public static File getPath() {
            while (true) {
                //        1.接收路径
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入你要露露的头像");
    
                String path = sc.nextLine();
    
    //       2. 判断后缀名
                if (!path.endsWith(".jpg") && !path.endsWith(".png") && !path.endsWith(".bmp") && !path.endsWith(".jpeg")) {
                    System.out.println("不是图片,请重新输入");
                    continue;
                }
    
    //        3.如果是  判断路径是否存在  是否是文件
                File file = new File(path);
                if (file.exists() && file.isFile()) {
                    System.out.println("成功");
                    return file;
                } else {
                    System.out.println("路径不合适");
                }
            }
    
        }
    
    //        2.定义方法判断用户头像在指定文件中是否存在、
        public  static  boolean isExist(String path) {
                /*
                   1.将lib文件转化成file对象
                   2.获取lib文件下面所有的文件名称数组
                   3.循环和用户上传的图片对比
                   4.存在就返回true
                * */
    //        1.将lib文件转化成file对象
            File f = new File("lib");
    //        2.获取lib文件下面所有的文件名称数组
            String[] names = f.list();
            System.out.println(names);
    
    //        3.循环和用户上传的图片对比
            for (String name:names){
                if (name.equals(path)){
                    return  true;
                }
    
            }
    
            return  false;
        }
    
    
        //    3.定义方法上传头像
        public static void uploadFile(File path) throws IOException {
        /*
            1.创建字节输入流,并关联数据源文件
            2.创建字节输出流,并关联目的文件
            3.定义变量,记录读取的文件
            4. 读取文件,将读取的数据赋值给变量,
            5.将读取的数据写入目标文件
            6.释放资源
        */
    
    //        1.创建字节输入流,并关联数据源文件
    //        2.创建字节输出流,并关联目的文件
    //        FileInputStream类中的构造方法
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("lib/"+path.getName()));
    
    //        3.定义变量,记录读取的文件
    
            int l;
            while (( l = bis.read()) != -1){
                bos.write(l);
            }
            bis.close();
            bos.close();
        }
    }
    
    
    展开全文
  • 前端jsp: form表单要加入: enctype="multipart/form-data" method="post" <tr> <td>图片:<font>*</font>:</td> ...pictureUrl=${candidate.image}" width.

    前端jsp:

    form表单要加入:

    enctype="multipart/form-data" method="post"

     

    <tr>
       <td>图片:<font>*</font>:</td>
       <td colspan="2">
          <img src="<%=basePath%>candidate/printPic?pictureUrl=${candidate.image}"  width="300px" height="200px"  id="imgs"/>
       </td>
       <td><input class="uploadImg" type="file" name="file"></td>
    </tr>

     

    js:

    $("#candidate_form  [name='file']").change(function() {
       var $file = $(this);
       var objUrl = $file[0].files[0];
       var windowURL = window.URL || window.webkitURL;
       var dataURL;
       dataURL = windowURL.createObjectURL(objUrl);
       $("#candidate_form #imgs").attr("src",dataURL);
    });

     

    后端:

    新增候选人:

    /**
     * 新增候选人
     * @param vo
     * @param response
     * @param request
     */
    @RequestMapping("/add")
    @ResponseBody
    @RepeatSubmitToken(removeToken = true)
    @RequiresPermissions(Auths.VOTING_ACTIVITY_ADD_CANDIDATE)
    public void addCandidate (@Valid final Candidate vo,
                             HttpServletResponse response, final HttpServletRequest request) throws BizException{
        String result = "";
        if(vo.getIntroduction().length()>200){
            throw new BizException("简介大于200字");
        }
        try {
            if(vo.getFile()!=null && vo.getFile().getSize()!=0){
                ImportUtils it = new ImportUtils();
                String url = it.saveFileToRoot(vo.getFile(),image,"/candidate",1);
                vo.setImage(url);
                candidateService.addCandidate(vo);
                result = "success";
            }else{
                result = "候选人图片不能为空!";
            }
        } catch (Exception ex) {
            result = "保存失败,"+ex.getMessage();
            ex.printStackTrace();
        }
        Map resultMap = new HashMap();
        resultMap.put("result",result);
        ResponseUtils.renderHtml(response, JSON.toJSONString(resultMap), "encoding:utf-8");
    }
    

    打印图片

    private String image = PropertyUtils.getPropertyValue("env", "upload.fileSavePath");
    @RequestMapping("/printPic")
    @ResponseBody
    public void printPic(HttpServletRequest request,HttpServletResponse response){
        String pictureUrl =request.getParameter("pictureUrl");
        if(pictureUrl!=null && !"".equals(pictureUrl)){
            try {
                String f = image+"/candidate/"+pictureUrl;
                response.setContentType("image/gif");
                File file = new File(f);
                FileCopyUtils.copy(new FileInputStream(file), response.getOutputStream());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

     

     

    展开全文
  • java头像上传 demo

    2018-04-17 11:55:36
    java头像上传 demo java头像上传 demojava头像上传 demojava头像上传 demojava头像上传 demojava头像上传 demojava头像上传 demojava头像上传 demojava头像上传 demojava头像上传 demojava头像上传 demo
  • 实现头像上传,裁剪头像,保存裁剪的头像,可以参考学习一下~
  • js+jquery+java实现头像上传和裁剪

    热门讨论 2015-09-09 17:22:06
    js+jquery+java实现头像上传和裁剪,界面仿百度头像上传样式,完美兼容各种浏览器,集成java上传技术+java图像处理+js剪切图片效果+jquery无刷新上传文件
  • 可以实现选择图片 然后剪切想要的大小 并上传 基于jsp的
  • JAVA实现上传图片实例(上传头像) JAVA实现上传图片实例(上传头像)
  • Java实现用户头像上传(修改默认文件大小限制)

    万次阅读 多人点赞 2018-08-25 14:04:39
    每次说起文件上传,就不得不提一下前端的实现方式,说来也奇怪,本博主最热门的博客居然也是文件上传,3万多的访问量占了总访问量的一多半:《传统form表单提交方式的文件上传与文件存储》,而且,今天搜索“form...

    概述

    每次说起文件上传,就不得不提一下前端的实现方式,说来也奇怪,本博主最热门的博客居然也是文件上传,3万多的访问量占了总访问量的一多半:《传统form表单提交方式的文件上传与文件存储》,而且,今天搜索“form表单提交文件” 百度第一篇居然就是这篇自己写的文章(下图留个纪念,不知道以后会不会有变化 哈哈)

    但是由于这篇文章写得比较早,博客玩的还不6,文章排版很糟糕,因此自己都不愿意看,今天完成了一个类似的功能:用户头像上传,特此重写一篇,巩固记忆。

    本功能涉及到的几个知识点:

    1、controller层的接收方式

    2、IO流相关的文件保存处理(路径问题、写出方式)

    3、spring boot 自带tomcat上传文件最大值限制的设置

    4、分系统分路径(Windows 或 Linux)

    5、文件保存的常规实现思路

    实现过程

    控制器接收方式

    以全栈的角度来分析这个功能,当然少不了前端的实现,但是目前多以前后端分离的方式来开发功能,因此,本篇博客着重讲解后端的spring boot的写法,这是本人认为比较工整的写法,对于前端的实现,可以看本篇博客的补充篇《传统form表单提交方式的文件上传与文件存储》。

    Controller的接收方式如下:

        @ApiOperation(value = "设置用户头像", notes = "设置当前用户头像")
        @PutMapping("/profiles")
        public SystemResult setUserProfile(@RequestParam(required = true) MultipartFile profile) {
            return userService.updUserProfile(profile);
        }

    请求方式是PUTrequired = true,参数类型为MutipartFile  ,只要是Spring 生态的应用程序,文件的接收都是使用MutipartFile这个类型,它表示通过 mutipart 请求上传了的一个文件。如果多个文件上传,那就用数组,如 MutipartFile[] 。

    Service处理

    Controller接收到文件后,Service需要完成两个大方向的处理:1、保存文件;2、路径存库

        @Override
        public SystemResult updUserProfile(MultipartFile newProfile) {
            // 根据Windows和Linux配置不同的头像保存路径
            String OSName = System.getProperty("os.name");
            String profilesPath = OSName.toLowerCase().startsWith("win") ? SystemConstant.WINDOWS_PROFILES_PATH
                    : SystemConstant.LINUX_PROFILES_PATH;
    
            if (!newProfile.isEmpty()) {
                // 当前用户
                User currentUser = (User) SecurityUtils.getSubject().getPrincipal();
                String profilePathAndNameDB = userDao.selectUserById(currentUser.getUserId()).getProfilePath();
                // 默认以原来的头像名称为新头像的名称,这样可以直接替换掉文件夹中对应的旧头像
                String newProfileName = profilePathAndNameDB;
                // 若头像名称不存在
                if (profilePathAndNameDB == null || "".equals(profilePathAndNameDB)) {
                    newProfileName = profilesPath+ System.currentTimeMillis()+ newProfile.getOriginalFilename();
                    // 路径存库
                    currentUser.setProfilePath(newProfileName);
                    userDao.updateUserProfilePath(currentUser);
                }
                // 磁盘保存
                BufferedOutputStream out = null;
                try {
                    File folder = new File(profilesPath);
                    if (!folder.exists())
                        folder.mkdirs();
                    out = new BufferedOutputStream(new FileOutputStream(newProfileName));
                    // 写入新文件
                    out.write(newProfile.getBytes());
                    out.flush();
                } catch (Exception e) {
                    e.printStackTrace();
                    return new SystemResult(HttpStatus.OK.value(), "设置头像失败", Boolean.FALSE);
                } finally {
                    try {
                        out.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
    
                return new SystemResult(HttpStatus.OK.value(), "设置头像成功", Boolean.TRUE);
            } else {
                return new SystemResult(HttpStatus.OK.value(), "设置头像失败", Boolean.FALSE);
            }
        }

    注释写的比较细,文件的命名,以及目录的创建,也不需要多说什么了。

    关于两个系统中使用的路径,虽然Windows系统中都是使用反斜杠“\” ,但是在Java中反斜杠需要转义,比如:“C:\\用户\\文件夹\\文件.txt”,这样,在存入数据库的时候也会比较难看,后来经过测试发现在Java中使用“/”也是没问题的。上述代码两个路径常量如下:

        /** 头像保存路径 */
        public static final String WINDOWS_PROFILES_PATH = "C:/super_meeting/profiles/";
        public static final String LINUX_PROFILES_PATH = "/root/super_meeting/profiles/";

    另外,当前用户的获取是通过shiro中的安全管理器SecurityManager来取得的,我们也可以让页面传入一个用户的ID(如果页面知道的话)这样就适用于任何使用场景了。

    修改文件上传限制

    如果做到上一步,当你上传的文件过大,可能总是会报如下异常

    org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: 
    The field profile exceeds its maximum permitted size of 1048576 bytes.

    可以看到这是Spring Boot自带的tomcat对上传文件大小的限制,我们需要增加一个配置信息:

    @Configuration
    public class CommonConfiguration {
        /**
         * 文件上传配置,在application配置文件中设置不起作用!
         */
        @Bean
        public MultipartConfigElement multipartConfigElement() {
            MultipartConfigFactory factory = new MultipartConfigFactory();
            // 单个文件最大
            factory.setMaxFileSize("10240KB"); // KB,MB
            // 设置总上传数据总大小
            factory.setMaxRequestSize("102400KB");
            return factory.createMultipartConfig();
        }
    }

    网上还有直接写在application.properties文件中的方式,但是本人亲测不管用,虽然不是很喜欢这种配置类的书写方式,但也没什么办法,凑合着用吧。

    配置文件的写法如下,如果哪位测试可用的话,请文末留言告诉我!!!文末留言告诉我!!!告诉我!!!

    spring.http.multipart.maxFileSize = 10Mb

    spring.http.multipart.maxRequestSize=100Mb

     测试

    查询数据库:

    打开swagger选择一张图片,或者你自己写一个form表单,都可以。

     

    检查一下 系统盘:

    数据库:

    完美!!

    综上,就是文件上传的全过程,其中省略了DAO层的代码,不过这个不是重点,重点还是我在概述中列出的那几项。如果有任何问题,请文末留言。

     

    展开全文
  • JAVA实现网页上传头像

    2019-09-30 08:15:06
    大概实现就是在页面嵌入一个file类型的input控件,并且将之隐藏,点击上传传递到这个控件上面,选择文件,将图片以base64的方式传递到后台,后台解码器解码,保存图片,并且把图片名字保存到数据库或者直接把图片...

    大概实现就是在页面嵌入一个file类型的input控件,并且将之隐藏,点击上传传递到这个控件上面,选择文件,将图片以base64的方式传递到后台,后台解码器解码,保存图片,并且把图片名字保存到数据库或者直接把图片转为byte数组存到数据库,数据库接收类型为binary。

    这里我就介绍第一种办法将图片保存到本地的方式。

    1.前台input控件的代码,这里设置accept表示只接受图片类型的文件。

     <input type="file" name="fileToUpload" id="fileToUpload" onchange="openFile(event)" style="display:none;" accept="image/*">
      </form>

    2.onchange方法则为选择文件时候触发的方法。正常流程应该是不触发onchange方法,而是选择了图片的时候,应该有个上传按钮,在执行相关事件,我这里的做法其实就是选择了图片就会进行上传,这里可以根据个人的需求进行修改。js中onchange所执行的方法。将图片转换为base64编码,利用Ajax传到后台。

    var openFile = function (event) {  
        var input = event.target;  
        var reader = new FileReader();  
        reader.onload = function () {  
            var database64 = getBase64Image(reader.result);  
            $.ajax({  
                url: "user/updateheadimg.do",  
                type: "POST",  
                data: { "imgdatabase": database64,"userid":$("#loginuserid").html()},  
                success: function (data) {  
                    $("#headpng").html(data);  
                }  
            });  
             
        };  
        reader.readAsDataURL(input.files[0]);  
      
    };  
    function getBase64Image(imgElem) {  
        return imgElem.replace("/^data:image\/(jpeg|jpg);base64,/", "");
    }  

    3.后台接收到图片的base64编码,进行解码,保存图片到项目本地,保存图片路径到数据库。

    @RequestMapping("updateheadimg")
        public ModelAndView updateMyHeadImg(String imgdatabase,String userid){
            ModelAndView mav=new ModelAndView();
            if(imgdatabase==null){
            
            }
            int a=imgdatabase.indexOf("base64");
            HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
            String path=request.getSession().getServletContext().getRealPath("");
            imgdatabase=imgdatabase.substring(a+7);
            BASE64Decoder decoder=new BASE64Decoder();
            byte[] imgbyte;
            try {
                imgbyte = decoder.decodeBuffer(imgdatabase);
                SAXReader reader=new SAXReader();
                Document doc=reader.read(path+"\\WEB-INF\\classes\\headId.xml");
                Element root=doc.getRootElement();
                int headImgId=Integer.parseInt(root.getTextTrim());
                OutputStream os=new FileOutputStream(new File(path+"\\headImg\\"+headImgId+".png"));
                root.setText(""+(headImgId+1));
                UtilTool.SaveToXml(doc,new File(path+"\\WEB-INF\\classes\\headId.xml"));
                os.write(imgbyte,0, imgbyte.length);
                userService.insetUserHead(headImgId+".png", userid);//头像写入数据库
                os.close();
                mav.addObject("imgsrc", headImgId+".png");
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            mav.setViewName("headimg");
            return mav;
        }

    4.图片名字我写在了headId.xml配置文件中并且每次保存了都+1处理,写在配置文件是保证了数据持久化,不会出现重名图片。

    <?xml version="1.0" encoding="UTF-8"?>
    <headid>
    1
    </headid>

    个人认为,将图片以二进制的方式保存到数据库更为合理方便,大家可以自己试一试,有空我也会贴出第二种方式的代码。

     

    转载于:https://www.cnblogs.com/qwqwQAQ/p/8329877.html

    展开全文
  • js+jquery+java实现头像剪切上传,页面样式仿百度头像上传布局,界面美观大方
  • 在很多的网站都可以实现上传头像,可以选择自己喜欢的图片做头像,从本地上传,下次登录时可以直接显示出已经上传头像,那么这个是如何实现的呢?   下面说一下我的实现过程(只是个人实现思路,实际网站怎...
  • 需要实现的效果图: 前端代码:注意需要先引入layui.css和layui.js文件 <body> <%-- todo 表单文件上传必须指定的属性 enctype 这里没有使用表单文件上传 所以需要再后台代码上加注解 @MultipartConfig...
  • java flash头像剪切上传

    2013-11-06 10:06:08
    java头像上传,可以对头像进行裁剪,生成所选区的图片
  • 该资源是自己做的(后台是java,页面是jsp,用了Jcrop插件裁剪图片),能实现上传本地图片,预览在页面上并根据用户的需求进行任意大小的裁剪,最后将裁剪后的图片进行展示。整个过程会把图片的名字插入数据库字段;...
  • Java截取头像上传

    2014-09-12 17:39:17
    Java 实现头像的截取,并上传头像。 项目使用说明: 1,要下载maven ,并配置环境变量 2,将image.jsp里面的图片换成你的本地图片 3,通过maven 打包。 4,部署到tomcat.打开image.jsp页面就可以验证了。 ...
  • 本项目依赖于maven ss框架,有maven环境即可。本文原链接:http://download.csdn.net/download/qq_16553359/9501011 原链接需要做一下处理即可
  • Java web实现头像上传以及读取显示

    千次阅读 2019-08-28 11:27:21
    最近在做一个学生的信息管理系统,其中就有一个功能是要上传头像以及实现显示的功能,那么要如何实现呢? 思路:1.如果要上传头像并要显示的话,可以创建一个工具类来将获取的头像另外复制一份放在工程目录下,并修改...
  • JAVA + js 实现 头像上传及裁剪功能

    万次阅读 2012-10-23 17:47:44
    我想大家对头像上传功能在陌生不过了把,每个人都应该用过,当然,从不更改头像的大侠除外,写到这里,我突然想到我的CSDN用户也没有头像,于是,我到设置里面准备去看看CSDN的头像上传功能是怎样的,可是我弄了半天...
  • 在各大网站上都可以实现上传头像功能,可以选择自己喜欢的图片做头像,从本地上传,今天小编给大家分享Java实现图片上传到服务器并把上传的图片读取出来,需要的朋友参考下
  • 功能需求描述 ... 图片为服务器文件存储(之所以不放到...头像上传区域: 1.1 设置头像点击事件 1.2 设置默认头像 1.3 在点击事件中,增加图片上传预览的弹出框 1.4 图片上传后预览 ...
  • java 实现文件上传 a

    2017-07-14 17:41:40
    java 实现文件上传 a
  • java头像上传接口

    2016-06-16 16:54:52
    最近项目需要写web接口对外客户端提供服务,百度了很多发现没有比较实用的,自己摸索了半天终于写出来了,不...我这里是用http协议实现的接口,实现了很多,如用户查询,插入,头像上传等等,在这就说下头像上传吧。
  • java后台加安卓端实现头像上传功能

    千次阅读 2018-03-16 15:37:40
    1、手机上传压缩后的图片到服务器2、后台接收到图片进行图片重命名、保存后台代码 package service;import java.io.File;import java.io.IOException;import java.util.List;import javax.servlet.Servlet;import ...
  • // 头像上传 @ RequestMapping ( "/fileUpload.action" ) @ResponseBody public String upload ( String username , @ RequestParam ( value = "image" ) MultipartFile file , ...
  • java头像裁剪上传

    千次阅读 2015-05-28 09:26:59
    java头像裁剪上传 源代码下载地址:http://www.zuidaima.com/share/1550463771118592.htm

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,739
精华内容 3,095
关键字:

java实现头像上传

java 订阅