If both projects are on the same server, the quickest way is a symbolic link.
ln -s /path/to/project-1/storage/app/private/documents /path/to/project-2/storage/app/private/project1_docs
However, if you're looking for the "correct" architectural way or if these projects might move to different servers, you have two main options:
You can do this one
Move the files to an S3 bucket or DigitalOcean Space. Both projects can then use the s3 driver in config/filesystems.php to point to the same bucket. It handles permissions and scaling without you worrying about physical paths.
or do via API Proxy
If Project 1 must remain the "owner" of the files, create a secured endpoint in Project 1 that streams the file:
// Project 1 - Controller
public function show(Document $doc) {
// Validate Project 2's request/token
return Storage::disk('private')->download($doc->path);
}
Then, in Project 2, you'd use Http::withToken(...)->get() to fetch or stream it to the user.