package com.xzx.gc.system.controller;  
 | 
  
 | 
import cn.hutool.core.convert.Convert;  
 | 
import cn.hutool.core.date.DateUtil;  
 | 
import cn.hutool.core.io.FileUtil;  
 | 
import cn.hutool.core.util.IdUtil;  
 | 
import cn.hutool.core.util.StrUtil;  
 | 
import com.xzx.gc.common.Result;  
 | 
import com.xzx.gc.common.constant.Constants;  
 | 
import com.xzx.gc.common.dto.CommonDto;  
 | 
import com.xzx.gc.common.request.BaseController;  
 | 
import com.xzx.gc.common.utils.BusinessUtil;  
 | 
import com.xzx.gc.common.utils.FileUtils;  
 | 
import com.xzx.gc.entity.ResourceInfo;  
 | 
import com.xzx.gc.system.mapper.ResourceInfoMapper;  
 | 
import io.swagger.annotations.Api;  
 | 
import io.swagger.annotations.ApiOperation;  
 | 
import io.swagger.annotations.ApiParam;  
 | 
import lombok.extern.slf4j.Slf4j;  
 | 
import org.springframework.beans.factory.annotation.Autowired;  
 | 
import org.springframework.http.MediaType;  
 | 
import org.springframework.web.bind.annotation.*;  
 | 
import org.springframework.web.multipart.MultipartFile;  
 | 
  
 | 
import javax.servlet.http.HttpServletRequest;  
 | 
import java.io.IOException;  
 | 
import java.util.ArrayList;  
 | 
import java.util.List;  
 | 
  
 | 
@RestController  
 | 
@Api(tags = {"上传下载管理"})  
 | 
@Slf4j  
 | 
public class UpOrDownloadController extends BaseController {  
 | 
  
 | 
    @Autowired  
 | 
    private BusinessUtil businessUtil;  
 | 
  
 | 
    @Autowired  
 | 
    private ResourceInfoMapper resourceInfoMapper;  
 | 
  
 | 
  
 | 
    @ApiOperation("文件上传")  
 | 
    @PostMapping(value = {"/file/upload", "/admin/front/file/upload"})  
 | 
    @ResponseBody  
 | 
    public Result<List<ResourceInfo>> upload(HttpServletRequest request, @ApiParam(value = "文件类型 ,1:默认图片") @RequestParam(name = "type", defaultValue = "1") int type, @RequestParam(name = "file") MultipartFile[] files) throws IOException {  
 | 
        Result result = new Result();  
 | 
        if (files == null || files.length == 0) {  
 | 
            result.setCode(-1);  
 | 
            result.setMsg("没有需要上传的文件");  
 | 
            return result;  
 | 
        }  
 | 
  
 | 
        if (files.length > 6) {  
 | 
            result.setCode(-1);  
 | 
            result.setMsg("最多只能传6张图片");  
 | 
            return result;  
 | 
        }  
 | 
  
 | 
  
 | 
        long sumSize = 0;  
 | 
        for (MultipartFile file : files) {  
 | 
            //是否格式正确  
 | 
            boolean isGreate=true;  
 | 
            if(file.getContentType().equals(MediaType.APPLICATION_OCTET_STREAM_VALUE)){  
 | 
                String suffix = FileUtils.getSuffixByFile(file);  
 | 
                if(!suffix.equals("jpg")&&!suffix.equals("png")){  
 | 
                    isGreate=false;  
 | 
                }  
 | 
            }else {  
 | 
                if (!"image/png".equals(file.getContentType()) && !"image/jpeg".equals(file.getContentType()) && !"image/jpg".equals(file.getContentType())) {  
 | 
                   isGreate=false;  
 | 
                }  
 | 
            }  
 | 
            if(!isGreate) {  
 | 
                result.setCode(-1);  
 | 
                result.setMsg("只支持JPG/PNG格式的图片");  
 | 
                log.debug("当前文件格式为:{}", file.getContentType());  
 | 
                return result;  
 | 
            }  
 | 
  
 | 
            sumSize += file.getSize();  
 | 
        }  
 | 
  
 | 
        //限制24m图片  
 | 
        long maxSize = 24 * 1024 * 1024;  
 | 
  
 | 
        if (maxSize < sumSize) {  
 | 
            result.setCode(-1);  
 | 
            result.setMsg("图片总共不能超过24M");  
 | 
            return result;  
 | 
        }  
 | 
  
 | 
  
 | 
        List<ResourceInfo> results = new ArrayList<>();  
 | 
        for (MultipartFile file : files) {  
 | 
            String suffix = StrUtil.subAfter(file.getOriginalFilename(), ".", true);  
 | 
            String realName = IdUtil.fastSimpleUUID() + "." + suffix;  
 | 
            FileUtil.writeFromStream(file.getInputStream(), Constants.IMG_UPLOAD_PATH + "/" + realName);  
 | 
            ResourceInfo resourceInfo = new ResourceInfo();  
 | 
            if(file.getContentType().equals(MediaType.APPLICATION_OCTET_STREAM_VALUE)){  
 | 
                suffix = FileUtils.getSuffixByFile(file);  
 | 
                if(suffix.equals("jpg")){  
 | 
                    resourceInfo.setResourceSubType("image/jpg");  
 | 
                }else if(suffix.equals("png")){  
 | 
                    resourceInfo.setResourceSubType("image/png");  
 | 
                }  
 | 
            }else {  
 | 
                resourceInfo.setResourceSubType(file.getContentType());  
 | 
            }  
 | 
            resourceInfo.setResourceOldName(file.getOriginalFilename());  
 | 
            resourceInfo.setResourceSize(file.getSize());  
 | 
            resourceInfo.setResourceUrl(businessUtil.getViewUrl() + "/" + realName);  
 | 
            resourceInfo.setResourceType(Convert.toShort(type));  
 | 
            resourceInfo.setCreateTime(DateUtil.now());  
 | 
            resourceInfo.setCreateUserId(getUserId(request));  
 | 
            resourceInfo.setRealName(realName);  
 | 
            results.add(resourceInfo);  
 | 
        }  
 | 
        resourceInfoMapper.insertList(results);  
 | 
        result.setData(results);  
 | 
        return result;  
 | 
    }  
 | 
  
 | 
  
 | 
    @ApiOperation(value = "文件删除", notes = "id:返回的文件资源ID,多个用逗号分隔")  
 | 
    @PostMapping(value = "/file/delete")  
 | 
    public Result uploadDelete(@RequestBody CommonDto commonDto) {  
 | 
        String[] split = commonDto.getId().split(",");  
 | 
        for (String id : split) {  
 | 
            ResourceInfo resourceInfo = resourceInfoMapper.selectByPrimaryKey(id);  
 | 
            resourceInfoMapper.deleteByPrimaryKey(id);  
 | 
            if (resourceInfo != null) {  
 | 
                String path = Constants.IMG_UPLOAD_PATH + "/" + resourceInfo.getRealName();  
 | 
                FileUtil.del(path);  
 | 
            }  
 | 
        }  
 | 
        return Result.success("");  
 | 
    }  
 | 
  
 | 
  
 | 
}  
 |