laravel上传图片之后,目录有图片,但是访问不到(404)的问题

解决办法

php artisan storage:link

### Laravel 中配置阿里云 OSS 私有访问权限并获取图片Laravel 应用程序中,为了确保存储于阿里云 OSS 的文件具有更高的安全性,可以将对象的访问控制设置为私有。这意味着只有授权用户才能下载或查看该资源。 #### 设置私有访问权限 要使上传至 `test` 文件夹下的 `cat.jpg` 成为私有文件,在上传时需指定其 ACL (Access Control List) 属性: ```php use OSS\OssClient; use OSS\Core\OssException; try { $bucket = 'your-bucket-name'; $object = 'test/cat.jpg'; // 对象名称即目标路径加文件名 // 创建 OssClient 实例。 $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); // 上传文件流并设置ACL属性为private. $result = $ossClient->putObject($bucket, $object, fopen(public_path('images/cat.jpg'), 'r'), ['x-oss-object-acl' => OssClient::OSS_ACL_TYPE_PRIVATE]); } catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return; } printf(__FUNCTION__ . ": OK" . "\n"); ``` 这段代码通过调用 `putObject()` 方法来完成文件上传操作的同时设置了对象的 ACL 类型为私有[^1]。 #### 获取临时签名 URL 访问私有文件 对于已设为私有的文件,可以通过生成带有时效性的预签名请求链接来进行访问。这种方式允许开发者创建一个仅限一定时间内有效的 HTTP 请求用于读取特定的对象数据而不暴露实际位置给客户端浏览器或其他第三方应用。 ```php // 假定已经成功初始化了$ossClient实例... try{ // 构建带有过期时间参数的时间戳字符串,默认单位秒 $timeoutInSeconds = 3600; // 半小时有效期 $signedUrl = $ossClient->signUrl($bucket, $object, $timeoutInSeconds); echo "The signed url is {$signedUrl}"; }catch(OssException $e){ print $e->getMessage(); } ``` 上述 PHP 脚本片段展示了如何利用 Aliyun SDK 提供的方法 `signUrl()` 来获得一张有效时间为一小时的临时访问令牌关联的目标图像地址[^2]。 #### 安全注意事项 当涉及到敏感资料的安全传输时,请务必遵循最佳实践指南,比如始终采用 HTTPS 进行通信;合理规划 bucket 和 object 的权限策略;定期轮换密钥等措施以保障系统的整体安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值