|
@@ -6,11 +6,17 @@ import com.ruoyi.file.domain.FilesUpload;
|
|
import com.ruoyi.file.service.FilesService;
|
|
import com.ruoyi.file.service.FilesService;
|
|
import com.usky.common.core.bean.ApiResult;
|
|
import com.usky.common.core.bean.ApiResult;
|
|
import com.usky.common.core.bean.CommonPage;
|
|
import com.usky.common.core.bean.CommonPage;
|
|
|
|
+import com.usky.common.security.utils.SecurityUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
|
+import java.net.URL;
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
|
+import java.util.Enumeration;
|
|
|
|
+import java.net.URLDecoder;
|
|
|
|
+import java.nio.charset.StandardCharsets;
|
|
|
|
|
|
|
|
|
|
@RestController
|
|
@RestController
|
|
@@ -21,17 +27,115 @@ public class FilesController {
|
|
private FilesService filesService;
|
|
private FilesService filesService;
|
|
|
|
|
|
@PostMapping("/upload")
|
|
@PostMapping("/upload")
|
|
- public ApiResult<FileUploadResponse> upload(@RequestParam MultipartFile file) {
|
|
|
|
- // 获取上传文件
|
|
|
|
- FileUploadResponse response = filesService.upload(file);
|
|
|
|
|
|
+ public ApiResult<FileUploadResponse> upload(@RequestParam MultipartFile file, HttpServletRequest request) {
|
|
|
|
+ // 打印所有请求头,以便调试
|
|
|
|
+ Enumeration<String> headerNames = request.getHeaderNames();
|
|
|
|
+ while (headerNames.hasMoreElements()) {
|
|
|
|
+ String headerName = headerNames.nextElement();
|
|
|
|
+ String headerValue = request.getHeader(headerName);
|
|
|
|
+// System.out.println(headerName + ": " + headerValue);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 从请求头中获取 token
|
|
|
|
+ String token = request.getHeader("Authorization");
|
|
|
|
+
|
|
|
|
+ // 如果 token 为空或格式不正确,返回错误信息
|
|
|
|
+ if (token == null || token.isEmpty()) {
|
|
|
|
+ return ApiResult.error("令牌不能为空");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 调用 SecurityUtils 的 getToken 方法解析 token
|
|
|
|
+ String parsedToken = SecurityUtils.getToken(request);
|
|
|
|
+
|
|
|
|
+ // 如果解析失败,返回错误信息
|
|
|
|
+ if (parsedToken == null || parsedToken.isEmpty()) {
|
|
|
|
+ return ApiResult.error("无效的令牌");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 从请求头中获取 userid 和 username
|
|
|
|
+ String userid = request.getHeader("user_id");
|
|
|
|
+ String username = request.getHeader("username");
|
|
|
|
+
|
|
|
|
+ // 如果用户名为空或解码失败,设置为“未知用户”
|
|
|
|
+ if (username == null || username.isEmpty()) {
|
|
|
|
+ username = "未知用户";
|
|
|
|
+ } else {
|
|
|
|
+ try {
|
|
|
|
+ // 使用 URLDecoder 解码用户名
|
|
|
|
+ username = URLDecoder.decode(username, StandardCharsets.UTF_8.name());
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ // 如果解码失败,设置为“未知用户”
|
|
|
|
+ username = "未知用户";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 从请求头中获取 referer
|
|
|
|
+ String referer = request.getHeader("referer");
|
|
|
|
+ String refererPath = "";
|
|
|
|
+ if (referer != null && !referer.isEmpty()) {
|
|
|
|
+ try {
|
|
|
|
+ // 提取 referer 的路径部分
|
|
|
|
+ URL url = new URL(referer);
|
|
|
|
+ refererPath = url.getPath();
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ System.out.println("无法解析 referer URL: " + referer);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 打印 referer 路径部分
|
|
|
|
+// System.out.println("Referer 路径部分: " + refererPath);
|
|
|
|
+
|
|
|
|
+ // 继续处理文件上传逻辑
|
|
|
|
+ FileUploadResponse response = filesService.upload(file, userid, username, refererPath);
|
|
return ApiResult.success(response);
|
|
return ApiResult.success(response);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@DeleteMapping("/delete/{id}")
|
|
@DeleteMapping("/delete/{id}")
|
|
- public ApiResult<String> delete(@PathVariable Integer id) {
|
|
|
|
|
|
+ public ApiResult<String> delete(@PathVariable Integer id, HttpServletRequest request) {
|
|
|
|
+ // 打印所有请求头,以便调试
|
|
|
|
+ Enumeration<String> headerNames = request.getHeaderNames();
|
|
|
|
+ while (headerNames.hasMoreElements()) {
|
|
|
|
+ String headerName = headerNames.nextElement();
|
|
|
|
+ String headerValue = request.getHeader(headerName);
|
|
|
|
+// System.out.println(headerName + ": " + headerValue);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 从请求头中获取 token
|
|
|
|
+ String token = request.getHeader("Authorization");
|
|
|
|
+
|
|
|
|
+ // 如果 token 为空或格式不正确,返回错误信息
|
|
|
|
+ if (token == null || token.isEmpty()) {
|
|
|
|
+ return ApiResult.error("令牌不能为空");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 调用 SecurityUtils 的 getToken 方法解析 token
|
|
|
|
+ String parsedToken = SecurityUtils.getToken(request);
|
|
|
|
+
|
|
|
|
+ // 如果解析失败,返回错误信息
|
|
|
|
+ if (parsedToken == null || parsedToken.isEmpty()) {
|
|
|
|
+ return ApiResult.error("无效的令牌");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 从请求头中获取 userid 和 username
|
|
|
|
+ String userid = request.getHeader("user_id");
|
|
|
|
+ String username = request.getHeader("username");
|
|
|
|
+
|
|
|
|
+ // 如果用户名为空或解码失败,设置为“未知用户”
|
|
|
|
+ if (username == null || username.isEmpty()) {
|
|
|
|
+ username = "未知用户";
|
|
|
|
+ } else {
|
|
|
|
+ try {
|
|
|
|
+ // 使用 URLDecoder 解码用户名
|
|
|
|
+ username = URLDecoder.decode(username, StandardCharsets.UTF_8.name());
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ // 如果解码失败,设置为“未知用户”
|
|
|
|
+ username = "未知用户";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
try {
|
|
try {
|
|
- filesService.deleteFile(id);
|
|
|
|
|
|
+ filesService.deleteFile(id, userid, username);
|
|
return ApiResult.success("删除成功");
|
|
return ApiResult.success("删除成功");
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
return ApiResult.error("删除失败"); // 删除失败,返回错误信息
|
|
return ApiResult.error("删除失败"); // 删除失败,返回错误信息
|