java实现头像上传功能

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();
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现上传头像功能的步骤如下: 1. 编写前端页面,包括上传按钮和显示头像的区域。 2. 在后端编写一个接收上传请求的方法,可以使用 Spring MVC 或者 Servlet 进行实现。 3. 在接收到上传请求后,从请求中获取上传头像文件,并将其保存到服务器上的指定目录中。 4. 如果需要对上传头像进行裁剪或者压缩,可以使用第三方库完成。 5. 将上传头像在前端显示出来,可以使用 img 标签或者 Canvas 进行实现。 以下是一个简单的实现示例(使用 Spring MVC): 前端页面: ```html <form action="/uploadAvatar" method="post" enctype="multipart/form-data"> <input type="file" name="avatar"> <button type="submit">上传头像</button> </form> <div id="avatar-container"></div> ``` 后端接收上传请求的方法: ```java @Controller public class AvatarController { private static final String AVATAR_DIRECTORY = "/path/to/avatar/directory/"; @PostMapping("/uploadAvatar") @ResponseBody public String uploadAvatar(@RequestParam("avatar") MultipartFile file) { if (!file.isEmpty()) { try { // 获取上传的文件名 String fileName = file.getOriginalFilename(); // 将文件保存到指定目录 file.transferTo(new File(AVATAR_DIRECTORY + fileName)); // 返回上传成功的消息 return "上传成功!"; } catch (IOException e) { e.printStackTrace(); // 返回上传失败的消息 return "上传失败!"; } } else { // 返回上传失败的消息 return "上传失败!"; } } } ``` 在前端页面中,可以使用 JavaScript 将上传头像显示出来: ```javascript // 获取显示头像的区域 var avatarContainer = document.getElementById("avatar-container"); // 创建一个 img 标签,并设置其 src 属性为上传头像文件的 URL var img = document.createElement("img"); img.src = "/path/to/avatar/directory/" + fileName; // 将 img 标签添加到显示头像的区域中 avatarContainer.appendChild(img); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值