回答編集履歴
1
一部訂正します。
test
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
①Fileクラス or UploadedFileクラスのインスタンス
|
18
18
|
|
19
|
-
②リソース
|
19
|
+
~~②リソース~~
|
20
20
|
|
21
21
|
③ファイルパス(テキスト)
|
22
22
|
|
@@ -28,11 +28,9 @@
|
|
28
28
|
|
29
29
|
ご提示のコードで、```$canvas```はバイナリ文字列だと思うので、上記のどれにも該当しないのですが、
|
30
30
|
|
31
|
-
内部のフローが
|
32
31
|
|
33
32
|
|
34
|
-
|
35
|
-
|
33
|
+
~~内部のフローが
|
36
34
|
|
37
35
|
if ($contents instanceof File ||
|
38
36
|
|
@@ -42,20 +40,122 @@
|
|
42
40
|
|
43
41
|
}
|
44
42
|
|
45
|
-
|
46
|
-
|
47
43
|
return is_resource($contents)
|
48
44
|
|
49
45
|
? $this->driver->putStream($path, $contents, $options)
|
50
46
|
|
51
47
|
: $this->driver->put($path, $contents, $options);
|
52
48
|
|
49
|
+
こうだったので、
|
50
|
+
|
51
|
+
①にも②にも該当しない```$canvas```を、ファイルパスとして処理しようと試みた結果のエラー・・・
|
52
|
+
|
53
|
+
ではないでしょうか。~~
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
----
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
すみません。。
|
64
|
+
|
65
|
+
手元にあったS3用ライブラリを入れていた環境のlaravelがちょっと古いバージョン(5.8くらいだった・・)でして、
|
66
|
+
|
67
|
+
そこでFileSystemの内部処理を見ていたことが裏目に出たようです。
|
68
|
+
|
69
|
+
laravel6あたりから、この内部処理がけっこう変わっていたことに気づかず、
|
70
|
+
|
71
|
+
勘違いをしてしまいました。。。
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
ということで、一部訂正します。
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
putFileを見てみると、
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
```php
|
86
|
+
|
87
|
+
public function putFile($path, $file, $options = [])
|
88
|
+
|
89
|
+
{
|
90
|
+
|
91
|
+
$file = is_string($file) ? new File($file) : $file;
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
return $this->putFileAs($path, $file, $file->hashName(), $options);
|
96
|
+
|
97
|
+
}
|
98
|
+
|
53
99
|
```
|
54
100
|
|
55
101
|
|
56
102
|
|
57
|
-
こう
|
103
|
+
こうなっていました。
|
58
104
|
|
59
|
-
|
105
|
+
バイナリ文字列は、```is_string()```が```true```になるので、
|
60
106
|
|
107
|
+
Fileクラスに渡されており、そのFileクラスの初期処理で
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
```
|
112
|
+
|
113
|
+
public function __construct(string $path, bool $checkPath = true)
|
114
|
+
|
115
|
+
{
|
116
|
+
|
117
|
+
if ($checkPath && !is_file($path)) {
|
118
|
+
|
119
|
+
throw new FileNotFoundException($path);
|
120
|
+
|
121
|
+
}
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
parent::__construct($path);
|
126
|
+
|
127
|
+
}
|
128
|
+
|
129
|
+
```
|
130
|
+
|
131
|
+
こう。。
|
132
|
+
|
133
|
+
エラー表示された ```is_file()```が出てきました。。
|
134
|
+
|
135
|
+
つまり、ここでエラーになっているということになります。
|
136
|
+
|
137
|
+
(若干エラーの出し方が、laravelの意図した形にはなっていないようには見えますが)
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
なので、怒られている原因は、第2引数```$canvas```であることは、間違いなさそうです。
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
これらのコードを見る限り、第2引数に渡せるのは
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
①Fileクラス or UploadedFileクラスのインスタンス
|
150
|
+
|
151
|
+
③ファイルパス(テキスト)
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
の二択・・?(かの確信はない^^;)
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
少なくとも、```->hashName()```でエラーにならないクラスインスタンス等でなければ、
|
160
|
+
|
61
|
-
|
161
|
+
この先の処理には進めない、ということです。
|