server.port=8082
#超时时长
fdfs.so-timeout=1500
#连接tracker服务器超时时长
fdfs.connect-timeout=600
#缩略图
fdfs.thumb-image.height=150
fdfs.thumb-image.width=150
#tracker服务配置地址列表,替换成自己服务的IP地址,支持多个
fdfs.tracker-list=192.168.206.173:22122
#文件上传配置
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=20MB
@Component
public class FastdfsUtils
{
public static final String DEFAULT_CHARSET = "UTF-8";
@Autowired
private FastFileStorageClient fastFileStorageClient;
/\*\*
\* 上传
\*
\* @param file
\* @return
\* @throws IOException
\*/
public StorePath upload(MultipartFile file)
throws IOException
{
// 设置文件信息
Set<MetaData> mataData = new HashSet<>();
mataData.add(new MetaData("author", "fastdfs"));
mataData.add(new MetaData("description", file.getOriginalFilename()));
// 上传
StorePath storePath = fastFileStorageClient.uploadFile(
file.getInputStream(), file.getSize(),
FilenameUtils.getExtension(file.getOriginalFilename()),
null);
return storePath;
}
/\*\*
\* 删除
\*
\* @param path 例如: group1/M00/00/00/wKjOrWD45PKAY4xmAFLQaGXPnu0735.jpg
\*/
public void delete(String path)
{
fastFileStorageClient.deleteFile(path);
}
/\*\*
\* 删除
\*
\* @param group 例如: group1
\* @param path 例如: M00/00/00/wKjOrWD45PKAY4xmAFLQaGXPnu0735.jpg
\*/
public void delete(String group, String path)
{
fastFileStorageClient.deleteFile(group, path);
}
/\*\*
\* 文件下载
\*
\* @param path 文件路径,例如:group1/M00/00/00/wKjOrWD40JiAQNKLABO5RCqSdcQ975.jpg
\* @param filename 下载的文件命名
\* @return
\*/
public void download(String path, String filename, HttpServletResponse response)
throws IOException
{
// 获取文件
StorePath storePath = StorePath.parseFromUrl(path);
//如果名字是空的 下载文件名以存储的为准
if (StringUtils.isBlank(filename))
{
filename = FilenameUtils.getName(storePath.getPath());
}
else
{
filename = filename + storePath.getPath().substring(storePath.getPath().lastIndexOf("."));
}
byte\[\] bytes =
fastFileStorageClient.downloadFile(storePath.getGroup(), storePath.getPath(), new DownloadByteArray());
response.reset();
response.setContentType("applicatoin/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
ServletOutputStream out = response.getOutputStream();
out.write(bytes);
out.close();
}
}
@RestController
public class FileController
{
private static final Logger LOGGER = LoggerFactory.getLogger(FileController.class);
@Resource
private FastdfsUtils fastdfsUtils;
@PostMapping("uploadFile")
private StorePath uploadFile(MultipartFile file)
{
StorePath storePath = null;
try
{
storePath = fastdfsUtils.upload(file);
}
catch (Exception e)
{
e.printStackTrace();
LOGGER.info("服务异常");
}
return storePath;
}
@PostMapping("deleteByPath")
private String deleteByPath(String path)
{
try
{
fastdfsUtils.delete(path);
}
catch (Exception e)
{
e.printStackTrace();
LOGGER.info("删除异常");
}
return "success";
}
@GetMapping("downloadFile")
private void downloadFile(String path, String name, HttpServletResponse response)
{
try
{
fastdfsUtils.download(path, name, response);
}
catch (Exception e)
{
e.printStackTrace();
LOGGER.info("下载异常");
}
}
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章