繁体   English   中英

使用 Laravel 文件存储将文件上传到 S3 时崩溃

[英]Crash while uploading file to S3 using Laravel file storage

使用 Laravel 文件存储系统将文件上传到 S3 时出现随机崩溃。 崩溃在本地/开发环境中不可重现,在生产环境中也是非常随机的。 所有文件仍在上传到 S3。 任何文件类型(pdf、png、jpg)都会随机出现此问题。 文件大小通常为 1 MB 到 3 MB。

Aws\Exception\CouldNotCreateChecksumException无法为提供的上传正文计算 sha256 校验和,因为它不可搜索。 为防止此错误,您可以 1) 在您的请求中包含 ContentMD5 或 ContentSHA256 参数,2) 将可搜索的 stream 用于正文,或 3) 将不可搜索的 stream 包装在 GuzzleHttp\Psr7\CachingStream object 中。您应该不过要小心,请记住 CachingStream 使用 PHP 临时流。 这意味着 stream 将暂时存储在本地磁盘上。

在非应用程序中崩溃:/vendor/aws/aws-sdk-php/src/Signature/SignatureV4.php 在 Aws\Signature\SignatureV4::getPayload /app/Http/Controllers/ApiController.php 在 App\Http\Controllers\ ApiController::__invoke 在第 432 行

$filename = $request->file('file')->getClientOriginalName();
$user_file_id = $request->input('file_id');
$path = Storage::putFileAs(
    'fileo',
    $request->file('file'),
    $user_file_id
);
return $path;

我有同样的错误消息,但文件没有保存到 S3 - 所以我有所不同。 我遵循了StackOverflow 的答案 - 更新 php.ini以增加上传限制,此错误已停止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM