You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel 8的ApplicationB中以Laravel风格访问ApplicationA存储文件

实现方案

方案1:让ApplicationB直接挂载ApplicationA的存储磁盘

在ApplicationB的config/filesystems.php中添加新的磁盘配置,直接指向ApplicationA的目标存储目录:

'repository' => [
    'driver' => 'local',
    // 替换为ApplicationA的repository目录绝对路径,根据实际服务器路径调整
    'root' => '/var/www/mywebsite/applicationA/storage/app/repository',
    'visibility' => 'public',
],
  • 确保ApplicationB的运行用户(如www-data)拥有读取ApplicationA该目录的权限
  • 在ApplicationB中可通过Storage::disk('repository')调用文件操作方法,比如获取文件内容:Storage::disk('repository')->get('demo.jpg')
  • 若要通过Web直接访问文件,可在ApplicationB的public目录下创建软链接指向ApplicationA的repository目录:
ln -s /var/www/mywebsite/applicationA/storage/app/repository /var/www/mywebsite/applicationB/public/repository

之后就能通过http://your-b-domain/repository/demo.jpg直接访问文件。

方案2:在ApplicationA中提供文件访问API

利用Laravel的路由与响应能力,在ApplicationA中开放文件访问接口:

  1. 在ApplicationA的routes/api.php中添加路由:
use Illuminate\Support\Facades\Storage;

Route::get('/files/{filename}', function ($filename) {
    if (!Storage::disk('repository')->exists($filename)) {
        abort(404);
    }
    // 返回文件响应,浏览器会自动处理预览或下载逻辑
    return Storage::disk('repository')->response($filename);
})->name('file.access');
  1. 如需权限控制,可添加认证中间件(如auth:sanctum)限制访问:
Route::get('/files/{filename}', function ($filename) {
    // 同上逻辑
})->middleware('auth:sanctum')->name('file.access');
  1. 在ApplicationB中,可通过Laravel自带的Http客户端获取文件,或直接拼接URL给前端使用:
// 获取文件内容
$fileContent = Http::get('http://your-a-domain/api/files/demo.jpg')->body();

// 生成前端可直接访问的URL
$fileUrl = 'http://your-a-domain/api/files/demo.jpg';

方案3:共享统一存储目录

将文件存储到两个项目都能访问的公共目录,替代各自的私有存储:

  1. 在服务器上创建共享目录,比如/var/www/shared/repository,并设置好权限(ApplicationA需读写权限,ApplicationB至少需读权限)
  2. 修改ApplicationA的config/filesystems.php中repository磁盘配置:
'repository' => [
    'driver' => 'local',
    'root' => '/var/www/shared/repository',
    'visibility' => 'public',
],
  1. 在ApplicationB的config/filesystems.php中添加完全相同的磁盘配置
  2. 可任选一个项目的public目录创建软链接到共享目录,实现Web直接访问

内容的提问来源于stack exchange,提问作者Switch88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 09:25:06