java文件上传

文件上传有很多种格式

第一种:Base64:
笔记直接上代码:

	  @PostMapping("/fileUploading")
    public AjaxResult uploadIng(@RequestParam(required = false, value = "fileStr") String fileStr, HttpServletRequest request)  {

        Base64DecodedMultipartFile base64DecodedMultipartFile = null;
        if (null != fileStr && !fileStr.isEmpty()) {
            base64DecodedMultipartFile = (Base64DecodedMultipartFile) Base64StrToImage.base64MutipartFile(fileStr);
            List<String> stringList = null;
            if (null != base64DecodedMultipartFile && !base64DecodedMultipartFile.equals("")) {
                FileUploading fileUploading = new FileUploading();
                try {
                    stringList = fileUploading.phtoUpload(base64DecodedMultipartFile, request);
                } catch (IOException e) {
                    e.printStackTrace();
                    return AjaxResult.error("信息异常"+e, 1);
                }
            }
            return AjaxResult.successState("上传成功", 0, stringList);
        } else {
            return AjaxResult.error("信息异常", 1);
        }
    }
public List<String> phtoUpload(Base64DecodedMultipartFile base64DecodedMultipartFile, HttpServletRequest request)throws IllegalStateException, IOException {
        List<String> list = new ArrayList<>();
        if (base64DecodedMultipartFile != null && !base64DecodedMultipartFile.isEmpty()) {
                list = saveFileBase64(base64DecodedMultipartFile, list, request);

        } else {
            System.out.println("未找到相对应的图片");
            return null;
        }
        return list;
    }
private List<String> saveFileBase64(Base64DecodedMultipartFile file, List<String> list, HttpServletRequest request)throws IllegalStateException, IOException  {

        if (file != null) {// 判断上传的文件是否为空
            String path = null;// 文件路径
            String type = null;// 文件类型
            String url = "";
            String fileName = file.getOriginalFilename();// 文件原名称
            System.out.println("上传的文件原名称:" + fileName);
            // 判断文件类型
            type = fileName.indexOf(".") != -1 ? fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()) : null;
            if (type != null) {// 判断文件类型是否为空
                if ("JPEG".equals(type.toUpperCase()) || "GIF".equals(type.toUpperCase()) || "PNG".equals(type.toUpperCase()) || "JPG".equals(type.toUpperCase())) {
                    String returnUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath()+"/upload";//存储路径
                    // 项目在容器中实际发布运行的根路径
                    String realPath = request.getSession().getServletContext()
                            .getRealPath("/upload/");
                    // 自定义的文件名称
                    String trueFileName = new Date().getTime()+"_"+file.getOriginalFilename();
                    // 设置存放图片文件的路径
                    path = realPath + trueFileName;
                    System.out.println("存放图片文件的路径:" + path);
                    File saveDir = new File(path);
                    if (!saveDir.getParentFile().exists())
                        saveDir.getParentFile().mkdirs();
                    // 转存文件到指定的路径
                    file.transferTo(saveDir);
                    url = returnUrl +"/"+trueFileName;
                    list.add(url);
                    System.out.println("文件成功上传到指定目录下");
                } else {
                    System.out.println("不是我们想要的文件类型,请按要求重新上传");
                    return null;
                }
            } else {
                System.out.println("文件类型为空");
                return null;
            }
        } else {
            System.out.println("没有找到相对应的文件");
            return null;
        }
        return list;
    }

第二种使用 MultipartFile:

 @PostMapping(value = "/photoUpload")
    public FileDataResult<Object> photoUpload(MultipartFile file, HttpServletRequest request, HttpServletResponse response, HttpSession session) throws IllegalStateException, IOException {
        FileDataResult<Object> resultData = new FileDataResult<>();
        if (file != null) {// 判断上传的文件是否为空
            String path = null;// 文件路径
            String type = null;// 文件类型
            String url = "";
            String fileName = file.getOriginalFilename();// 文件原名称
            System.out.println("上传的文件原名称:" + fileName);
            // 判断文件类型
            type = fileName.indexOf(".") != -1 ? fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()) : null;
            if (type != null) {// 判断文件类型是否为空
                if ("GIF".equals(type.toUpperCase()) || "PNG".equals(type.toUpperCase()) || "JPG".equals(type.toUpperCase())|| "JPEG".equals(type.toUpperCase())|| "MP4".equals(type.toUpperCase())|| "3GP".equals(type.toUpperCase()) ) {
                    String returnUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath()+"/upload";//存储路径
                    // 项目在容器中实际发布运行的根路径
                    String realPath = request.getSession().getServletContext()
                            .getRealPath("/upload/");
                    // 自定义的文件名称
                    String trueFileName = new Date().getTime()+"_"+file.getOriginalFilename();
                    // 设置存放图片文件的路径
                    path = realPath + trueFileName;
                    System.out.println("存放图片文件的路径:" + path);
                    File saveDir = new File(path);
                    if (!saveDir.getParentFile().exists())
                        saveDir.getParentFile().mkdirs();
                    // 转存文件到指定的路径
                    file.transferTo(saveDir);
                    url = returnUrl +"/"+trueFileName;
                    resultData.setData(url);
                    System.out.println("文件成功上传到指定目录下");
                } else {
                    System.out.println("不是我们想要的文件类型,请按要求重新上传");
                    return null;
                }
            } else {
                System.out.println("文件类型为空");
                return null;
            }
        } else {
            System.out.println("没有找到相对应的文件");
            return null;
        }
        return resultData;
    }

第三种 HttpServletRequest:

 @RequestMapping("/testfile")
    @SuppressWarnings({"unchecked","rawtypes"})
    public  FileDataResult<Object> testFile( HttpServletRequest request,HttpServletResponse resp,HttpSession session) throws IOException {//value的名字一定要叫upfile,这是ueditor写好的参数名称
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        // 获得上传的文件(根据前台的name名称得到上传的文件)
        MultiValueMap<String, MultipartFile> multiValueMap = multipartRequest.getMultiFileMap();
        List<MultipartFile> upfile = multiValueMap.get("file");
        FileDataResult<Object> fileUploading= null;
        if(!upfile.isEmpty()){
            for (MultipartFile file : upfile) {
                fileUploading= new FileUploadingController().photoUpload(file,request,resp,session);
            }
        }
        return fileUploading;
    }

第三种就是通过request种获取file ,然后可以通过第二种方式将file 上传上去;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XC_Aaron

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值