package com.thhy.filectrl.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.api.utils.StringUtils; import com.thhy.filectrl.service.FdfsService; import com.thhy.filectrl.service.impl.FdfsServiceImpl; import com.thhy.general.common.BasicResult; import com.thhy.general.common.BasicStatus; import com.thhy.general.entity.DownFileDto; import com.thhy.general.exception.BasicException; import org.csource.common.NameValuePair; import org.redisson.api.RBucket; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @RestController @RequestMapping("file") public class FileController { @Autowired private FdfsService fdfsService; @Autowired private RedissonClient redissonClient; @Value("${file.prekey}") private String prekey; @RequestMapping("upload") public BasicResult upload(HttpServletRequest req){ CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(req.getSession().getServletContext()); String newFileName = ""; if (commonsMultipartResolver.isMultipart(req)) { MultipartHttpServletRequest request = (MultipartHttpServletRequest)req; MultipartFile multipartFile = request.getFile("file"); try { String result = fdfsService.upload(multipartFile); return BasicResult.success(result); } catch (Exception e) { throw new BasicException(BasicStatus.FILE_UPLOAD_ERROR); } }else{ throw new BasicException(BasicStatus.REQUEST_NOT_FILE); } } @RequestMapping("down") public void down(String authcode,HttpServletResponse resp){ RBucket rBucket = redissonClient.getBucket(prekey+":authcode:"+authcode); String param = rBucket.getAndDelete(); if(StringUtils.isEmpty(param)){ throw new BasicException(BasicStatus.DOWNLOAD_IS_NOT_SUPPORT); } DownFileDto downFileDto = JSON.toJavaObject(JSON.parseObject(param),DownFileDto.class); if(StringUtils.isBlank(downFileDto.getFullpath())){ throw new BasicException(BasicStatus.DOWNLOAD_IS_NOT_SUPPORT); } fdfsService.downfile(downFileDto.getFullpath(),downFileDto.getFileName(),resp); } @RequestMapping("fileInfo") public BasicResult fileInfo(@RequestBody String param){ JSONObject jsonObject = JSON.parseObject(param); NameValuePair[] nameValuePairs = fdfsService.fileInfo(jsonObject.getString("fullpath")); return BasicResult.success(nameValuePairs); } @RequestMapping("preview") public void preview(String authcode,HttpServletResponse resp){ RBucket rBucket = redissonClient.getBucket(prekey+":authcode:"+authcode); String param = rBucket.getAndDelete(); if(StringUtils.isEmpty(param)){ throw new BasicException(BasicStatus.DOWNLOAD_IS_NOT_SUPPORT); } DownFileDto downFileDto = JSON.toJavaObject(JSON.parseObject(param),DownFileDto.class); if(StringUtils.isBlank(downFileDto.getFullpath())){ throw new BasicException(BasicStatus.DOWNLOAD_IS_NOT_SUPPORT); } fdfsService.preview(downFileDto.getFullpath(),resp); } }