Search in sources :

Example 21 with SystemConfig

use of com.moxi.mogublog.commons.entity.SystemConfig in project mogu_blog_v2 by moxi624.

the class MinioUtil method uploadSingleFile.

/**
 * 上传单个文件,返回上传成功后的地址
 *
 * @param multipartFile
 * @return
 */
private String uploadSingleFile(MultipartFile multipartFile) {
    String url = "";
    try {
        // 使用MinIO服务的URL,端口,Access key和Secret key创建一个MinioClient对象
        SystemConfig systemConfig = feignUtil.getSystemConfig();
        MinioClient minioClient = MinioClient.builder().endpoint(systemConfig.getMinioEndPoint()).credentials(systemConfig.getMinioAccessKey(), systemConfig.getMinioSecretKey()).build();
        String oldName = multipartFile.getOriginalFilename();
        // 获取扩展名,默认是jpg
        String picExpandedName = FileUtils.getPicExpandedName(oldName);
        // 获取新文件名
        String newFileName = System.currentTimeMillis() + Constants.SYMBOL_POINT + picExpandedName;
        // 重新生成一个文件名
        InputStream inputStram = multipartFile.getInputStream();
        minioClient.putObject(PutObjectArgs.builder().bucket(systemConfig.getMinioBucket()).object(newFileName).stream(inputStram, multipartFile.getSize(), -1).contentType(multipartFile.getContentType()).build());
        url = Constants.SYMBOL_LEFT_OBLIQUE_LINE + systemConfig.getMinioBucket() + Constants.SYMBOL_LEFT_OBLIQUE_LINE + newFileName;
    } catch (Exception e) {
        e.getStackTrace();
        log.error("上传文件出现异常: {}", e.getMessage());
    }
    return url;
}
Also used : SystemConfig(com.moxi.mogublog.commons.entity.SystemConfig) MinioClient(io.minio.MinioClient) InputStream(java.io.InputStream)

Example 22 with SystemConfig

use of com.moxi.mogublog.commons.entity.SystemConfig in project mogu_blog_v2 by moxi624.

the class MinioUtil method deleteBatchFile.

/**
 * 批量删除文件
 *
 * @param fileNameList
 * @return
 */
public String deleteBatchFile(List<String> fileNameList) {
    // 获取系统配置
    SystemConfig systemConfig = feignUtil.getSystemConfig();
    MinioClient minioClient = MinioClient.builder().endpoint(systemConfig.getMinioEndPoint()).credentials(systemConfig.getMinioAccessKey(), systemConfig.getMinioSecretKey()).build();
    try {
        for (String fileName : fileNameList) {
            minioClient.removeObject(RemoveObjectArgs.builder().bucket(systemConfig.getMinioBucket()).object(fileName).build());
        }
    } catch (Exception e) {
        log.error("批量删除文件失败, 错误消息: {}", e.getMessage());
        return ResultUtil.errorWithData(MessageConf.DELETE_DEFAULT_ERROR);
    }
    return ResultUtil.successWithMessage(MessageConf.DELETE_SUCCESS);
}
Also used : SystemConfig(com.moxi.mogublog.commons.entity.SystemConfig) MinioClient(io.minio.MinioClient)

Example 23 with SystemConfig

use of com.moxi.mogublog.commons.entity.SystemConfig in project mogu_blog_v2 by moxi624.

the class FileServiceImpl method ckeditorUploadCopyFile.

@Override
public Object ckeditorUploadCopyFile() {
    HttpServletRequest request = RequestHolder.getRequest();
    // 从参数中获取token【该方法用于ckeditor复制图片上传,所以会携带token在参数中】
    String token = request.getParameter(SysConf.TOKEN);
    if (StringUtils.isEmpty(token)) {
        throw new InsertException(ErrorCode.INSERT_DEFAULT_ERROR, "未读取到携带token");
    }
    String[] params = token.split("\\?url=");
    // 从Redis中获取系统配置文件
    Map<String, String> qiNiuConfig = new HashMap<>();
    Map<String, String> resultMap = feignUtil.getSystemConfigMap(params[0]);
    SystemConfig systemConfig = feignUtil.getSystemConfigByMap(resultMap);
    String userUid = "uid00000000000000000000000000000000";
    String adminUid = "uid00000000000000000000000000000000";
    String projectName = "blog";
    String sortName = "admin";
    // 需要上传的URL
    String itemUrl = params[1];
    // 判断需要上传的域名和本机图片域名是否一致
    if (EFilePriority.QI_NIU.equals(systemConfig.getContentPicturePriority())) {
        // 判断需要上传的域名和本机图片域名是否一致,如果一致,那么就不需要重新上传,而是直接返回
        if (StringUtils.isNotEmpty(systemConfig.getQiNiuPictureBaseUrl()) && StringUtils.isNotEmpty(itemUrl) && itemUrl.indexOf(systemConfig.getQiNiuPictureBaseUrl()) > -1) {
            Map<String, Object> result = new HashMap<>();
            result.put(SysConf.UPLOADED, 1);
            result.put(SysConf.FILE_NAME, itemUrl);
            result.put(SysConf.URL, itemUrl);
            return result;
        }
    } else if (EFilePriority.MINIO.equals(systemConfig.getContentPicturePriority())) {
        // 判断需要上传的域名和本机图片域名是否一致,如果一致,那么就不需要重新上传,而是直接返回
        if (StringUtils.isNotEmpty(systemConfig.getMinioPictureBaseUrl()) && StringUtils.isNotEmpty(itemUrl) && itemUrl.indexOf(systemConfig.getMinioPictureBaseUrl()) > -1) {
            Map<String, Object> result = new HashMap<>();
            result.put(SysConf.UPLOADED, 1);
            result.put(SysConf.FILE_NAME, itemUrl);
            result.put(SysConf.URL, itemUrl);
            return result;
        }
    } else {
        // 判断需要上传的域名和本机图片域名是否一致,如果一致,那么就不需要重新上传,而是直接返回
        if (StringUtils.isNotEmpty(systemConfig.getLocalPictureBaseUrl()) && StringUtils.isNotEmpty(itemUrl) && itemUrl.indexOf(systemConfig.getLocalPictureBaseUrl()) > -1) {
            Map<String, Object> result = new HashMap<>();
            result.put(SysConf.UPLOADED, 1);
            result.put(SysConf.FILE_NAME, itemUrl);
            result.put(SysConf.URL, itemUrl);
            return result;
        }
    }
    // projectName现在默认base
    if (StringUtils.isEmpty(projectName)) {
        projectName = "base";
    }
    // TODO 这里可以检测用户上传,如果不是网站的用户或会员就不能调用
    if (StringUtils.isEmpty(userUid) && StringUtils.isEmpty(adminUid)) {
        return ResultUtil.result(SysConf.ERROR, "请先注册");
    }
    QueryWrapper<FileSort> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq(SQLConf.SORT_NAME, sortName);
    queryWrapper.eq(SQLConf.PROJECT_NAME, projectName);
    queryWrapper.eq(SQLConf.STATUS, EStatus.ENABLE);
    List<FileSort> fileSorts = fileSortService.list(queryWrapper);
    FileSort fileSort = null;
    if (fileSorts.size() > 0) {
        fileSort = fileSorts.get(0);
    } else {
        return ResultUtil.result(SysConf.ERROR, "文件不被允许上传");
    }
    String sortUrl = fileSort.getUrl();
    // 判断url是否为空,如果为空,使用默认
    if (StringUtils.isEmpty(sortUrl)) {
        sortUrl = "base/common/";
    } else {
        sortUrl = fileSort.getUrl();
    }
    // 获取新文件名(默认为jpg)
    String newFileName = System.currentTimeMillis() + ".jpg";
    // 文件url访问地址
    String localUrl = "";
    String qiNiuUrl = "";
    String minioUrl = "";
    // 上传到本地服务器【判断是否能够上传至本地】
    if (EOpenStatus.OPEN.equals(systemConfig.getUploadLocal())) {
        localUrl = localFileService.uploadPictureByUrl(itemUrl, fileSort);
    }
    // 上传七牛云 【判断是否能够上传七牛云】
    if (EOpenStatus.OPEN.equals(systemConfig.getUploadMinio())) {
        minioUrl = minioService.uploadPictureByUrl(itemUrl);
    }
    // 上传七牛云 【判断是否能够上传七牛云】
    if (EOpenStatus.OPEN.equals(systemConfig.getUploadQiNiu())) {
        qiNiuUrl = qiniuService.uploadPictureByUrl(itemUrl, systemConfig);
    }
    File file = new File();
    file.setCreateTime(new Date(System.currentTimeMillis()));
    file.setFileSortUid(fileSort.getUid());
    file.setFileOldName(itemUrl);
    file.setFileSize(0L);
    file.setPicExpandedName(Constants.FILE_SUFFIX_JPG);
    file.setPicName(newFileName);
    // 设置本地图片
    file.setPicUrl(systemConfig.getLocalPictureBaseUrl() + localUrl);
    // 设置minio图片
    file.setMinioUrl(systemConfig.getMinioPictureBaseUrl() + minioUrl);
    // 设置七牛云图片
    file.setQiNiuUrl(systemConfig.getQiNiuPictureBaseUrl() + qiNiuUrl);
    file.setStatus(EStatus.ENABLE);
    file.setUserUid(userUid);
    file.setAdminUid(adminUid);
    fileService.save(file);
    Map<String, Object> result = new HashMap<>();
    result.put(SysConf.UPLOADED, 1);
    result.put(SysConf.FILE_NAME, newFileName);
    // 设置显示方式
    if (EFilePriority.QI_NIU.equals(qiNiuConfig.get(SysConf.PICTURE_PRIORITY))) {
        result.put(SysConf.URL, systemConfig.getQiNiuPictureBaseUrl() + qiNiuUrl);
    } else if (EFilePriority.MINIO.equals(qiNiuConfig.get(SysConf.PICTURE_PRIORITY))) {
        result.put(SysConf.URL, systemConfig.getMinioPictureBaseUrl() + localUrl);
    } else {
        result.put(SysConf.URL, systemConfig.getLocalPictureBaseUrl() + localUrl);
    }
    return result;
}
Also used : SystemConfig(com.moxi.mogublog.commons.entity.SystemConfig) QueryWrapper(com.baomidou.mybatisplus.core.conditions.query.QueryWrapper) InsertException(com.moxi.mougblog.base.exception.exceptionType.InsertException) MultipartHttpServletRequest(org.springframework.web.multipart.MultipartHttpServletRequest) HttpServletRequest(javax.servlet.http.HttpServletRequest) FileSort(com.moxi.mogublog.commons.entity.FileSort) File(com.moxi.mogublog.commons.entity.File) MultipartFile(org.springframework.web.multipart.MultipartFile)

Example 24 with SystemConfig

use of com.moxi.mogublog.commons.entity.SystemConfig in project mogu_blog_v2 by moxi624.

the class FileServiceImpl method uploadPictureByUrl.

@Override
public String uploadPictureByUrl(FileVO fileVO) {
    // 获取配置文件
    SystemConfig systemConfig;
    if (fileVO.getSystemConfig() != null) {
        Map<String, String> resultMap = fileVO.getSystemConfig();
        systemConfig = feignUtil.getSystemConfigByMap(resultMap);
    } else {
        // 从Redis中获取七牛云配置文件
        systemConfig = feignUtil.getSystemConfig();
    }
    String userUid = fileVO.getUserUid();
    String adminUid = fileVO.getAdminUid();
    String projectName = fileVO.getProjectName();
    String sortName = fileVO.getSortName();
    List<String> urlList = fileVO.getUrlList();
    // projectName现在默认base
    if (StringUtils.isEmpty(projectName)) {
        projectName = "base";
    }
    // 这里可以检测用户上传,如果不是网站的用户或会员就不能调用
    if (StringUtils.isEmpty(userUid) && StringUtils.isEmpty(adminUid)) {
        throw new InsertException(ErrorCode.INSERT_DEFAULT_ERROR, "请先注册");
    }
    QueryWrapper<FileSort> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq(SQLConf.SORT_NAME, sortName);
    queryWrapper.eq(SQLConf.PROJECT_NAME, projectName);
    queryWrapper.eq(SQLConf.STATUS, EStatus.ENABLE);
    List<FileSort> fileSorts = fileSortService.list(queryWrapper);
    FileSort fileSort = null;
    if (fileSorts.size() > 0) {
        fileSort = fileSorts.get(0);
    } else {
        throw new InsertException(ErrorCode.INSERT_DEFAULT_ERROR, "文件不被允许上传, 请填写文件分类信息");
    }
    List<com.moxi.mogublog.commons.entity.File> lists = new ArrayList<>();
    // 文件上传
    if (urlList != null && urlList.size() > 0) {
        for (String itemUrl : urlList) {
            // 获取新文件名(默认为jpg)
            String newFileName = System.currentTimeMillis() + ".jpg";
            // 将图片上传到本地服务器中以及七牛云中
            String picurl = "";
            String qiNiuUrl = "";
            String minioUrl = "";
            // 判断是否能够上传至本地
            if (EOpenStatus.OPEN.equals(systemConfig.getUploadLocal())) {
                picurl = localFileService.uploadPictureByUrl(itemUrl, fileSort);
            }
            // 上传七牛云,判断是否能够上传七牛云
            if (EOpenStatus.OPEN.equals(systemConfig.getUploadMinio())) {
                minioUrl = minioService.uploadPictureByUrl(itemUrl);
            }
            // 上传七牛云,判断是否能够上传七牛云
            if (EOpenStatus.OPEN.equals(systemConfig.getUploadQiNiu())) {
                qiNiuUrl = qiniuService.uploadPictureByUrl(itemUrl, systemConfig);
            }
            com.moxi.mogublog.commons.entity.File file = new com.moxi.mogublog.commons.entity.File();
            file.setCreateTime(new Date(System.currentTimeMillis()));
            file.setFileSortUid(fileSort.getUid());
            file.setFileOldName(itemUrl);
            file.setFileSize(0L);
            file.setPicExpandedName("jpg");
            file.setPicName(newFileName);
            file.setPicUrl(picurl);
            file.setQiNiuUrl(qiNiuUrl);
            file.setMinioUrl(minioUrl);
            file.setStatus(EStatus.ENABLE);
            file.setUserUid(userUid);
            file.setAdminUid(adminUid);
            fileService.save(file);
            lists.add(file);
        }
        // 保存成功返回数据
        return ResultUtil.result(SysConf.SUCCESS, lists);
    }
    return ResultUtil.result(SysConf.ERROR, "请上传图片");
}
Also used : SystemConfig(com.moxi.mogublog.commons.entity.SystemConfig) QueryWrapper(com.baomidou.mybatisplus.core.conditions.query.QueryWrapper) InsertException(com.moxi.mougblog.base.exception.exceptionType.InsertException) File(com.moxi.mogublog.commons.entity.File) FileSort(com.moxi.mogublog.commons.entity.FileSort) File(com.moxi.mogublog.commons.entity.File) MultipartFile(org.springframework.web.multipart.MultipartFile)

Example 25 with SystemConfig

use of com.moxi.mogublog.commons.entity.SystemConfig in project mogu_blog_v2 by moxi624.

the class FileServiceImpl method ckeditorUploadFile.

@Override
public Object ckeditorUploadFile(HttpServletRequest request) {
    String token = request.getParameter(SysConf.TOKEN);
    // 从Redis中获取七牛云配置文件
    Map<String, String> qiNiuResultMap = feignUtil.getSystemConfigMap(token);
    SystemConfig systemConfig = feignUtil.getSystemConfigByMap(qiNiuResultMap);
    Map<String, Object> map = new HashMap<>();
    Map<String, Object> errorMap = new HashMap<>();
    // 引用自己设计的一个工具类
    AboutFileUtil af = new AboutFileUtil();
    // 转换成多部分request
    MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
    // 取得request中的所有文件名
    Iterator<String> iter = multiRequest.getFileNames();
    while (iter.hasNext()) {
        MultipartFile file = multiRequest.getFile(iter.next());
        if (file != null) {
            // 获取旧名称
            String oldName = file.getOriginalFilename();
            // 获取扩展名
            String expandedName = FileUtils.getPicExpandedName(oldName);
            // 判断是否是图片
            if (!af.isPic(expandedName)) {
                map.put(SysConf.UPLOADED, 0);
                errorMap.put(SysConf.MESSAGE, "请上传正确的图片");
                map.put(SysConf.ERROR, errorMap);
                return map;
            }
            // 对图片大小进行限制
            if (file.getSize() > (10 * 1024 * 1024)) {
                map.put(SysConf.UPLOADED, 0);
                errorMap.put(SysConf.MESSAGE, "图片大小不能超过10M");
                map.put(SysConf.ERROR, errorMap);
                return map;
            }
            // 设置图片上传服务必要的信息
            request.setAttribute(SysConf.USER_UID, SysConf.DEFAULT_UID);
            request.setAttribute(SysConf.ADMIN_UID, SysConf.DEFAULT_UID);
            request.setAttribute(SysConf.PROJECT_NAME, SysConf.BLOG);
            request.setAttribute(SysConf.SORT_NAME, SysConf.ADMIN);
            List<MultipartFile> fileData = new ArrayList<>();
            fileData.add(file);
            // 批量上传图片
            String result = fileService.batchUploadFile(request, fileData, systemConfig);
            Map<String, Object> resultMap = JsonUtils.jsonToMap(result);
            String code = resultMap.get(SysConf.CODE).toString();
            if (SysConf.SUCCESS.equals(code)) {
                List<HashMap<String, Object>> resultList = (List<HashMap<String, Object>>) resultMap.get(SysConf.DATA);
                if (resultList.size() > 0) {
                    Map<String, Object> picture = resultList.get(0);
                    String fileName = picture.get(SysConf.PIC_NAME).toString();
                    map.put(SysConf.UPLOADED, 1);
                    map.put(SysConf.FILE_NAME, fileName);
                    // 设置博客详情显示方式
                    if (EFilePriority.QI_NIU.equals(systemConfig.getContentPicturePriority())) {
                        String qiNiuPictureBaseUrl = systemConfig.getQiNiuPictureBaseUrl();
                        String qiNiuUrl = picture.get(SysConf.QI_NIU_URL).toString();
                        map.put(SysConf.URL, qiNiuPictureBaseUrl + qiNiuUrl);
                    } else if (EFilePriority.MINIO.equals(systemConfig.getContentPicturePriority())) {
                        String minioPictureBaseUrl = systemConfig.getMinioPictureBaseUrl();
                        String url = minioPictureBaseUrl + picture.get(SysConf.MINIO_URL).toString();
                        map.put(SysConf.URL, url);
                    } else {
                        String localPictureBaseUrl = systemConfig.getLocalPictureBaseUrl();
                        // 设置图片服务根域名
                        String url = localPictureBaseUrl + picture.get(SysConf.PIC_URL).toString();
                        map.put(SysConf.URL, url);
                    }
                }
            } else {
                map.put(SysConf.UPLOADED, 0);
                errorMap.put(SysConf.MESSAGE, "上传失败");
                map.put(SysConf.ERROR, errorMap);
            }
        }
    }
    return map;
}
Also used : SystemConfig(com.moxi.mogublog.commons.entity.SystemConfig) AboutFileUtil(com.moxi.mogublog.picture.util.AboutFileUtil) MultipartFile(org.springframework.web.multipart.MultipartFile) MultipartHttpServletRequest(org.springframework.web.multipart.MultipartHttpServletRequest)

Aggregations

SystemConfig (com.moxi.mogublog.commons.entity.SystemConfig)25 QueryWrapper (com.baomidou.mybatisplus.core.conditions.query.QueryWrapper)11 QueryException (com.moxi.mougblog.base.exception.exceptionType.QueryException)7 HttpServletRequest (javax.servlet.http.HttpServletRequest)5 MultipartFile (org.springframework.web.multipart.MultipartFile)5 ArrayList (java.util.ArrayList)4 MultipartHttpServletRequest (org.springframework.web.multipart.MultipartHttpServletRequest)4 File (com.moxi.mogublog.commons.entity.File)3 User (com.moxi.mogublog.commons.entity.User)3 InsertException (com.moxi.mougblog.base.exception.exceptionType.InsertException)3 MinioClient (io.minio.MinioClient)3 ApiOperation (io.swagger.annotations.ApiOperation)3 HashMap (java.util.HashMap)3 List (java.util.List)3 Map (java.util.Map)3 Blog (com.moxi.mogublog.commons.entity.Blog)2 FileSort (com.moxi.mogublog.commons.entity.FileSort)2 AboutFileUtil (com.moxi.mogublog.picture.util.AboutFileUtil)2 FileVO (com.moxi.mougblog.base.vo.FileVO)2 InputStream (java.io.InputStream)2