[英]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.