mirror of
https://github.com/zfile-dev/zfile.git
synced 2025-04-19 05:34:52 +00:00
52 lines
2.0 KiB
Java
52 lines
2.0 KiB
Java
package im.zhaojun.zfile.controller.home;
|
|
|
|
import im.zhaojun.zfile.context.DriveContext;
|
|
import im.zhaojun.zfile.model.constant.ZFileConstant;
|
|
import im.zhaojun.zfile.service.impl.LocalServiceImpl;
|
|
import im.zhaojun.zfile.util.FileUtil;
|
|
import im.zhaojun.zfile.util.StringUtils;
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.util.AntPathMatcher;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import org.springframework.web.servlet.HandlerMapping;
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import java.io.File;
|
|
|
|
/**
|
|
* 本地存储 Controller
|
|
* @author zhaojun
|
|
*/
|
|
@Controller
|
|
public class LocalController {
|
|
|
|
@Resource
|
|
private DriveContext driveContext;
|
|
|
|
/**
|
|
* 本地存储下载指定文件
|
|
*
|
|
* @param driveId
|
|
* 驱动器 ID
|
|
* @param type
|
|
* 附件预览类型:
|
|
* download:下载
|
|
* default: 浏览器默认行为
|
|
*/
|
|
@GetMapping("/file/{driveId}/**")
|
|
@ResponseBody
|
|
public void downAttachment(@PathVariable("driveId") Integer driveId, String type, final HttpServletRequest request, final HttpServletResponse response) {
|
|
String path = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
|
|
String bestMatchPattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
|
|
AntPathMatcher apm = new AntPathMatcher();
|
|
String filePath = apm.extractPathWithinPattern(bestMatchPattern, path);
|
|
LocalServiceImpl localService = (LocalServiceImpl) driveContext.get(driveId);
|
|
File file = new File(StringUtils.removeDuplicateSeparator(localService.getFilePath() + ZFileConstant.PATH_SEPARATOR + filePath));
|
|
FileUtil.export(request, response, file, type);
|
|
}
|
|
|
|
} |