回答編集履歴

1

一部訂正します。

2020/07/09 00:16

投稿

mix-peach
mix-peach

スコア1910

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
- ```php
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
- ①にも②にも該当しない```$canvas```ファイルパスとして処理しようと試みた結果のエラー・・・
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
+ この先の処理に進めない、ということ