package com.qianwen.core.boot.ctrl; import java.io.File; import java.io.IOException; import java.util.List; import javax.servlet.http.HttpServletRequest; import com.qianwen.core.boot.file.BladeFileUtil; import com.qianwen.core.boot.file.LocalFile; import com.qianwen.core.secure.BladeUser; import com.qianwen.core.secure.utils.AuthUtil; import com.qianwen.core.tool.api.R; import com.qianwen.core.tool.utils.Charsets; import com.qianwen.core.tool.utils.WebUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import org.springframework.core.io.support.ResourceRegion; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.util.UriUtils; /* loaded from: blade-core-boot-9.3.0.0-SNAPSHOT.jar:org/springblade/core/boot/ctrl/BladeController.class */ public class BladeController { @Autowired private HttpServletRequest request; public HttpServletRequest getRequest() { return this.request; } public BladeUser getUser() { return AuthUtil.getUser(); } public R data(T data) { return R.data(data); } public R data(T data, String message) { return R.data(data, message); } public R data(T data, String message, int code) { return R.data(code, data, message); } public R success(String message) { return R.success(message); } public R fail(String message) { return R.fail(message); } public R status(boolean flag) { return R.status(flag); } public LocalFile getFile(MultipartFile file) { return BladeFileUtil.getFile(file); } public LocalFile getFile(MultipartFile file, String dir) { return BladeFileUtil.getFile(file, dir); } public LocalFile getFile(MultipartFile file, String dir, String path, String virtualPath) { return BladeFileUtil.getFile(file, dir, path, virtualPath); } public List getFiles(List files) { return BladeFileUtil.getFiles(files); } public List getFiles(List files, String dir) { return BladeFileUtil.getFiles(files, dir); } public List getFiles(List files, String dir, String path, String virtualPath) { return BladeFileUtil.getFiles(files, dir, path, virtualPath); } protected ResponseEntity download(File file) throws IOException { String fileName = file.getName(); return download(file, fileName); } protected ResponseEntity download(File file, String fileName) throws IOException { return download((Resource) new FileSystemResource(file), fileName); } protected ResponseEntity download(Resource resource, String fileName) throws IOException { HttpStatus status; HttpServletRequest request = WebUtil.getRequest(); String header = request.getHeader("User-Agent"); String header2 = header == null ? "" : header.toUpperCase(); if (header2.contains("MSIE") || header2.contains("TRIDENT") || header2.contains("EDGE")) { status = HttpStatus.OK; } else { status = HttpStatus.CREATED; } long position = 0; long count = resource.contentLength(); String range = request.getHeader("Range"); if (null != range) { status = HttpStatus.PARTIAL_CONTENT; String[] rangeRange = range.replace("bytes=", "").split("-"); position = Long.parseLong(rangeRange[0]); if (rangeRange.length > 1) { long end = Long.parseLong(rangeRange[1]); count = (end - position) + 1; } } HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); String encodeFileName = UriUtils.encode(fileName, Charsets.UTF_8); String disposition = "attachment;filename=\"" + encodeFileName + "\";filename*=utf-8''" + encodeFileName; headers.set("Content-Disposition", disposition); return new ResponseEntity<>(new ResourceRegion(resource, position, count), headers, status); } }