首页 > 解决方案 > 带有外部 URL 的 Laravel putFileAs 不起作用

问题描述

试图将外部 URL 图像保存到我的 s3。

但是当我使用下面的代码时,它会返回错误。

      $contents = file_get_contents($url);
      $filename = Str::slug($findproduct->title)."-".uniqid().".".$extension;

      Storage::disk('s3')->putFileAs('product', $contents, $filename, ['visibility' => 'public']);

这是错误:

fopen() expects parameter 1 to be a valid path, string given

标签: laravel

解决方案


fopen()putFileAs API Docs调用的第一个函数。

它尝试打开File作为参数 2 提供的putFileAs(),在您的情况下是$contents。(FWIW,较新版本的 Laravel 也接受字符串作为文件路径)

它期望 this 是 aFileUploadedFileobject。

file_get_contents()而是返回一个字符串。

尝试改用这个:

$contents = new File($url);

推荐阅读