You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.3 KiB

Relative Upload Storage Implementation Plan

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Goal: Store new uploads under a relative file/年/月/日 directory beside the running JAR and persist file/... paths.

Architecture: Resolve file.path: file against the Java working directory, create it during file utility initialization, and keep the resource handler rooted there. Normalize both new file/... and legacy /年/月/日/... records before file-system access and public URL creation.

Tech Stack: Spring Boot 2.7, Java, JUnit 5, Windows deployment script.

Global Constraints

  • Do not hard-code a drive or server-specific path.
  • New database paths must start with file/; existing date-only paths must remain readable.
  • The public URL must contain exactly one /file/ segment.

Task 1: Relative local storage and compatibility

Files:

  • Modify: src/main/resources/application-dev.yml

  • Modify: src/main/java/com/sztzjy/linkCommerce/util/file/LocalFileUtil.java

  • Modify: src/main/java/com/sztzjy/linkCommerce/config/security/WebConfigurerAdapter.java

  • Modify: upload URL call sites that concatenate file.url and stored paths

  • Test: src/test/java/com/sztzjy/linkCommerce/util/file/LocalFileUtilTest.java

  • Write a failing test that constructs LocalFileUtil("file") in a temporary working directory and expects the file root plus file/2026/8/3/example.pdf logical path.

  • Implement relative-root resolution, root creation, date-directory creation, and normalization for new and legacy paths.

  • Update the resource mapping and public URL construction so a stored file/2026/8/3/example.pdf is served as /file/2026/8/3/example.pdf.

  • Run the focused test, then the complete Maven test suite and package build.

  • Commit the implementation.

Task 2: Server release verification

Files:

  • Deploy: packaged backend release

  • Publish the verified backend through the existing SSH deployment script.

  • Confirm the JAR-adjacent file directory is created on the server and the backend starts successfully.

  • Upload a test file and verify its disk path, returned URL, and persisted file/... path.