php - 使用 Laravel 将 blob 作为文件存储在 S3 中
问题描述
我在 Vue 中使用文件上传插件通过 API 上传一些图像和 pdf 文件,并且它可以选择在上传文件时创建一个 blob 字段。
发送给 Laravel 的请求如下。我可以通过在浏览器上复制和粘贴 URL 来从浏览器访问 blob。
在服务器端代码上,我尝试使用以下代码保存文件,但保存的文件是一些损坏的 64 字节文件,而不是实际图像。我们如何将 blob 作为普通文件存储在文件系统中?
if ($request->has('files')) {
$files = $request->get('files');
$urls = [];
foreach ($files as $file) {
$filename = 'files/' . $file['name'];
// Upload File to s3
Storage::disk('s3')->put($filename, $file['blob']);
Storage::disk('s3')->setVisibility($filename, 'public');
$url = Storage::disk('s3')->url($filename);
$urls[] = $url;
}
return response()->json(['urls' => $urls]);
}
解决方案
尝试替换这个:
Storage::disk('s3')->put($filename, $file['blob']);
有了这个:
Storage::disk('s3')->put($filename, base64_decode($file['blob']));
推荐阅读
- powerapps - PowerApps Gallery 项目在保存时缩小
- c# - 如何修改内部选择矩形的 HScrollBar 大小?
- r - 根据时间和进度消息自定义闪亮应用程序中的进度指示器
- python - Python Webscraping Selenium 弹出 Youtube
- android - 为什么缩小会导致错误“JSONObject [”奖励“]不是字符串”?
- angular - 如何解决 Angular 中的“检测到循环依赖”警告?
- java - 超过时间异常java时间限制的问题
- c++ - “-std=c++17 无法通过命令行识别”在 Windows 中构建崇高文本时
- visual-studio-code - 在 VSCode 中浏览大文件中的行/列
- php - 从时间戳创建日期和时间的php数组