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

如何像对接AWS S3一样将Laravel存储与Storj.io存储桶对接实现文件上传?

Laravel对接Storj存储桶文件上传问题排查与解决

问题背景

尝试通过Laravel内置的Storage系统对接Storj.io存储桶实现文件上传,采用类似AWS S3的配置方式,但上传失败。

已完成操作

1. 环境配置

  • 在.env中添加了以下配置:
AWS_ACCESS_KEY_ID=my_access_key
AWS_SECRET_ACCESS_KEY=my_secret_key
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=my_storj_bucket
AWS_ENDPOINT=https://gateway.storjshare.io
AWS_USE_PATH_STYLE_ENDPOINT=true
  • 更新了config/filesystems.php中的S3驱动配置:
's3' => [
    'driver' => 's3',
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION'),
    'bucket' => env('AWS_BUCKET'),
    'endpoint' => env('AWS_ENDPOINT'),
    'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
],

2. 上传代码

编写了基础上传函数:

$path = $request->file('file')->store('uploads', 's3');

排查与解决步骤

  1. 确认依赖安装
    确保已安装AWS SDK依赖,Laravel新版本默认包含,旧版本可执行:
composer require league/flysystem-aws-s3-v3 "^3.0"
  1. 修正Storj端点
    Storj官方已废弃gateway.storjshare.io,更新.env中的端点为当前有效地址:
AWS_ENDPOINT=https://gateway.storj.io
  1. 检查密钥权限
    登录Storj控制台,确认所用的访问密钥对目标存储桶具备读写权限,避免因权限不足导致上传失败。
  2. 清除配置缓存
    Laravel可能缓存了旧配置,执行命令刷新:
php artisan config:clear
php artisan cache:clear
  1. 测试基础连接
    编写简单代码验证存储桶连接是否正常:
use Illuminate\Support\Facades\Storage;

// 测试列出存储桶文件
$files = Storage::disk('s3')->files();
dd($files);

// 测试上传小文件
Storage::disk('s3')->put('test.txt', 'Hello Storj');
  1. 调整区域配置
    Storj对区域要求宽松,若不确定存储桶区域,可将.env中的区域留空:
AWS_DEFAULT_REGION=

或在config/filesystems.php中设置默认值为null:

'region' => env('AWS_DEFAULT_REGION', null),

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:12:38