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<String> 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<String> 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);
|
}
|
}
|