码迷,mamicode.com
首页 > 编程语言 > 详细

java api 接收保存图片到本地

时间:2020-05-29 09:37:34      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:工具   sts   bre   encoder   set   jpg   ror   pat   url   

    /**
    * 保存图片
    */
    @CrossOrigin(origins = {"*", "null"})
    @RequestMapping(value = "uploadPic", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
    @ResponseBody
    public String uploadPic(MultipartFile photo) {
        AppRootBean appRootBean = new AppRootBean();
        String resultString = "";
        MDC.put("requestType","uploadPic");
        logger.info("接收前端data:{}", photo);

        String s1="";
        try {
            if (null!=photo&&!photo.isEmpty())
            {
                MakeOrderNum makeOrderNum = new MakeOrderNum();
                String wx_photo = makeOrderNum.makeOrderNum("wx_photo");
                s1 = PicUtil.singleFileUpload(photo,wx_photo);

            }

            if (StringUtils.isEmpty(s1))
            {
                resultString = appRootBean.sendRoot(new Object(), ErrorCode.MSG_UPPHONE_CODE_ERROR.getResponseCode(),
                        ErrorCode.MSG_UPPHONE_CODE_ERROR.getResponseMsg());
            }else {
                resultString = appRootBean.sendRoot(s1, ErrorCode.MSG_OK.getResponseCode(),
                        ErrorCode.MSG_OK.getResponseMsg());
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

        logger.info("上送图片" + resultString);
        MDC.clear();
        return resultString;
    }

 

工具类:

package com.weixiu.jingwei.utils;

import net.coobird.thumbnailator.Thumbnails;
import org.springframework.web.multipart.MultipartFile;
import sun.misc.BASE64Encoder;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;

/**
 * @Author: 张学涛
 * @Date: 2019-08-23 10:25
 * @Version 1.0
 */
public class PicUtil {

    private static String UPLOAD_FOLDER = "/opt/wxPhoto/";
    public static String singleFileUpload(MultipartFile pc1,String picName) throws IOException {
        // logger.debug("传入的文件参数:{}", JSON.toJSONString(file, true));
        if (Objects.isNull(pc1) || pc1.isEmpty()) {

            return "";
        }
        try {
            byte[] bytes = pc1.getBytes();

            Path path = Paths.get(UPLOAD_FOLDER + "/");

            if (!Files.isWritable(path)) {
                Files.createDirectories(path);
            }
            String extension = getFileExtension(pc1);  //获取文件后缀

            UUID uuid = UUID.randomUUID();
            String str = uuid.toString();

            String picname = str.substring(0, 8) + str.substring(9, 13) + str.substring(14, 18) + str.substring(19, 23) + str.substring(24);
            String relativeAddr = picname+picName + extension;  //唯一的名字接上后缀
            Thumbnails.of(pc1.getInputStream()).size(1920, 1200)    //写入
                    .outputQuality(1.0f).toFile(path + "/" + relativeAddr);
//            Thumbnails.of(pc1.getInputStream())  //写入
//                    .outputQuality(1.0f).toFile(path + "/" + relativeAddr);
            //logger.debug("文件写入成功...");
            return Paths.get(path + "/" + relativeAddr).toString();

        } catch (IOException e) {
//            e.printStackTrace();
            return "null";
        }
    }

    //写一个删除方法,你们可以看情况修改
    public static String deFile(String path) {
        String resultInfo = null;
        Map<String, Object> modelMap = new HashMap<String, Object>();

        // String sb =area.getAreaName();;
        // sb.replace("/","\\");
        //String sb1 = "F:\\photos\\蛇皮玩意儿\\123\\瞎把.jpg";
        File file = new File(path);
        if (file.exists()) {
            if (file.delete()) {
                resultInfo = "1-删除成功";
            } else {
                resultInfo = "0-删除失败";
            }
        } else {
            resultInfo = "文件不存在!";
        }
//        imgDomainURL: http://10.40.0.53:8888/jeecg-boot/sys/common/view/
        return resultInfo;

    }

    public static boolean deleteDirectory(String dirPath) {// 删除目录(文件夹)以及目录下的文件
        // 如果sPath不以文件分隔符结尾,自动添加文件分隔符
        boolean flag = false;
        String a = null;
        if (!dirPath.endsWith(File.separator)) {
            dirPath = dirPath + File.separator;
            System.out.println("没有后缀符号‘/‘");

        }
        File dirFile = new File(dirPath);
        // 如果dir对应的文件不存在,或者不是一个目录,则退出
        if (!dirFile.exists() || !dirFile.isDirectory()) {
            System.out.println("不是目录");
            return false;
        }
        flag = true;
        File[] files = dirFile.listFiles();// 获得传入路径下的所有文件
        for (int i = 0; i < files.length; i++) {// 循环遍历删除文件夹下的所有文件(包括子目录)
            if (files[i].isFile()) {// 删除子文件
                a = deFile(files[i].getAbsolutePath());
                System.out.println(files[i].getAbsolutePath() + " 目录文件删除成功");
                if (!flag) {
                    break;// 如果删除失败,则跳出
                }
            } else {// 运用递归,删除子目录
                flag = deleteDirectory(files[i].getAbsolutePath());
                if (!flag) {
                    break;// 如果删除失败,则跳出
                }
            }
        }
        if (!flag) {
            return false;
        }
        if (dirFile.delete()) {
            // 删除当前目录
            return true;
        }
        return false;
    }

    private static String getFileExtension(MultipartFile File) {
        String originalFileName = File.getOriginalFilename();
        return originalFileName.substring(originalFileName.lastIndexOf("."));

    }


}

 

java api 接收保存图片到本地

标签:工具   sts   bre   encoder   set   jpg   ror   pat   url   

原文地址:https://www.cnblogs.com/zhangxuetao/p/12985461.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!