一,java
处理静态资源请求
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;
import javax.servlet.http.HttpServletRequest;
import java.nio.file.Path;
/**
* @author JIANGL
* @version 1.0
* @description:处理静态资源请求
*/
@Component
public class NonStaticResourceHttpRequestHandler extends ResourceHttpRequestHandler {
public final static String ATTR_FILE = "NON-STATIC-FILE";
@Override
protected Resource getResource(HttpServletRequest request) {
final Path filePath = (Path) request.getAttribute(ATTR_FILE);
// 它提供了一种方便的方式来访问和操作文件系统上的文件
return new FileSystemResource(filePath);
}
}
请求
@Resource
NonStaticResourceHttpRequestHandler nonStaticResourceHttpRequestHandler;
/**
* @Author JIANGL
* @Description 文件回显
**/
@RequestMapping("filePreview")
public void filePreview(HttpServletRequest request, HttpServletResponse response) throws Exception {
Path filePath = Paths.get("文件路径=============");
if (Files.exists(filePath)) {
//这个方式为下载文件attachment
// response.setHeader("Content-Disposition", "attachment; filename=\"" + filePath.getFileName() + "\"");
String mimeType = Files.probeContentType(filePath);
// 文件类型
if (!StringUtils.isEmpty(mimeType)) {
response.setContentType(mimeType);
}
request.setAttribute(NonStaticResourceHttpRequestHandler.ATTR_FILE, filePath);
nonStaticResourceHttpRequestHandler.handleRequest(request, response);
} else {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
response.setCharacterEncoding(StandardCharsets.UTF_8.toString());
}
}
二,vue
<img :src="访问地址+/filePreview" alt="图片加载失败"/>
<video controls :src=" 访问地址+/filePreview "/>
。。。