回答編集履歴
1
一部訂正します。
answer
CHANGED
@@ -7,25 +7,75 @@
|
|
7
7
|
laravelの中身を少し掘り下げて確認しましたが、```putFile```の、第二引数に渡せるのは、
|
8
8
|
|
9
9
|
①Fileクラス or UploadedFileクラスのインスタンス
|
10
|
-
②リソース
|
10
|
+
~~②リソース~~
|
11
11
|
③ファイルパス(テキスト)
|
12
12
|
|
13
13
|
のいずれか。。だと思われます。
|
14
14
|
|
15
15
|
ご提示のコードで、```$canvas```はバイナリ文字列だと思うので、上記のどれにも該当しないのですが、
|
16
|
-
内部のフローが
|
17
16
|
|
18
|
-
|
17
|
+
~~内部のフローが
|
19
18
|
if ($contents instanceof File ||
|
20
19
|
$contents instanceof UploadedFile) {
|
21
20
|
return $this->putFile($path, $contents, $options);
|
22
21
|
}
|
23
|
-
|
24
22
|
return is_resource($contents)
|
25
23
|
? $this->driver->putStream($path, $contents, $options)
|
26
24
|
: $this->driver->put($path, $contents, $options);
|
25
|
+
こうだったので、
|
26
|
+
①にも②にも該当しない```$canvas```を、ファイルパスとして処理しようと試みた結果のエラー・・・
|
27
|
+
ではないでしょうか。~~
|
28
|
+
|
29
|
+
|
30
|
+
----
|
31
|
+
|
32
|
+
すみません。。
|
33
|
+
手元にあったS3用ライブラリを入れていた環境のlaravelがちょっと古いバージョン(5.8くらいだった・・)でして、
|
34
|
+
そこでFileSystemの内部処理を見ていたことが裏目に出たようです。
|
35
|
+
laravel6あたりから、この内部処理がけっこう変わっていたことに気づかず、
|
36
|
+
勘違いをしてしまいました。。。
|
37
|
+
|
38
|
+
ということで、一部訂正します。
|
39
|
+
|
40
|
+
|
41
|
+
putFileを見てみると、
|
42
|
+
|
43
|
+
```php
|
44
|
+
public function putFile($path, $file, $options = [])
|
45
|
+
{
|
46
|
+
$file = is_string($file) ? new File($file) : $file;
|
47
|
+
|
48
|
+
return $this->putFileAs($path, $file, $file->hashName(), $options);
|
49
|
+
}
|
27
50
|
```
|
28
51
|
|
29
|
-
こう
|
52
|
+
こうなっていました。
|
53
|
+
バイナリ文字列は、```is_string()```が```true```になるので、
|
54
|
+
Fileクラスに渡されており、そのFileクラスの初期処理で
|
55
|
+
|
56
|
+
```
|
57
|
+
public function __construct(string $path, bool $checkPath = true)
|
58
|
+
{
|
59
|
+
if ($checkPath && !is_file($path)) {
|
60
|
+
throw new FileNotFoundException($path);
|
61
|
+
}
|
62
|
+
|
63
|
+
parent::__construct($path);
|
64
|
+
}
|
65
|
+
```
|
66
|
+
こう。。
|
67
|
+
エラー表示された ```is_file()```が出てきました。。
|
68
|
+
つまり、ここでエラーになっているということになります。
|
69
|
+
(若干エラーの出し方が、laravelの意図した形にはなっていないようには見えますが)
|
70
|
+
|
30
|
-
|
71
|
+
なので、怒られている原因は、第2引数```$canvas```であることは、間違いなさそうです。
|
72
|
+
|
73
|
+
これらのコードを見る限り、第2引数に渡せるのは
|
74
|
+
|
75
|
+
①Fileクラス or UploadedFileクラスのインスタンス
|
76
|
+
③ファイルパス(テキスト)
|
77
|
+
|
78
|
+
の二択・・?(かの確信はない^^;)
|
79
|
+
|
80
|
+
少なくとも、```->hashName()```でエラーにならないクラスインスタンス等でなければ、
|
31
|
-
|
81
|
+
この先の処理には進めない、ということです。
|