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.urland 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 thefileroot plusfile/2026/8/3/example.pdflogical 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.pdfis 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
filedirectory 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.