回答編集履歴

2

追記

2020/02/04 08:32

投稿

mikkame
mikkame

スコア5036

test CHANGED
@@ -24,6 +24,32 @@
24
24
 
25
25
 
26
26
 
27
+ > Symfony\Component\Debug\Exception\FatalThrowableError : Call to a member function getRealPath() on string
28
+
29
+
30
+
31
+ 書いてある通りなんですが、 string型に`getRealPath`メソッドはありません。
32
+
33
+
34
+
35
+ > $file = Storage::disk('ftp')->get('sample.csv');
36
+
37
+
38
+
39
+ この時点で、リモートからファイルの内容をテキストとして取得します。
40
+
41
+ `$file`は`ファイルオブジェクト的ななにか`ではなく`string`です。
42
+
43
+
44
+
45
+
46
+
47
+ ---
48
+
49
+
50
+
51
+
52
+
27
53
  ```
28
54
 
29
55
  $file = Storage::disk('ftp')->get('sample.csv');
@@ -31,24 +57,6 @@
31
57
  ```
32
58
 
33
59
  ここで一旦ファイルをメモリ上に載せてしまっているのがまずい気がします。
34
-
35
-
36
-
37
- また
38
-
39
-
40
-
41
- ```
42
-
43
- $csv = new \SplFileObject($file->getRealPath());
44
-
45
- ```
46
-
47
-
48
-
49
- ここのgetRealPathがローカルなのかリモートなのかよくわかりませんね・・・
50
-
51
- ちょっと安全に振り、一旦ローカルに保存してから処理を行う方法を考えましょう
52
60
 
53
61
 
54
62
 

1

追記

2020/02/04 08:32

投稿

mikkame
mikkame

スコア5036

test CHANGED
@@ -17,3 +17,63 @@
17
17
 
18
18
 
19
19
  とかでメモリの上限を上げてください。
20
+
21
+
22
+
23
+ ---
24
+
25
+
26
+
27
+ ```
28
+
29
+ $file = Storage::disk('ftp')->get('sample.csv');
30
+
31
+ ```
32
+
33
+ ここで一旦ファイルをメモリ上に載せてしまっているのがまずい気がします。
34
+
35
+
36
+
37
+ また
38
+
39
+
40
+
41
+ ```
42
+
43
+ $csv = new \SplFileObject($file->getRealPath());
44
+
45
+ ```
46
+
47
+
48
+
49
+ ここのgetRealPathがローカルなのかリモートなのかよくわかりませんね・・・
50
+
51
+ ちょっと安全に振り、一旦ローカルに保存してから処理を行う方法を考えましょう
52
+
53
+
54
+
55
+ laravelのstorageはflysystemでできているはずなのでreadStreamがある気がするので
56
+
57
+
58
+
59
+
60
+
61
+ ```
62
+
63
+
64
+
65
+ Storage::disk('local')->writeStream(
66
+
67
+ 'temp',
68
+
69
+ Storage::disk('ftp')->readStream('sample.csv')
70
+
71
+ );
72
+
73
+
74
+
75
+ ```
76
+
77
+
78
+
79
+ みたいな感じで一旦ローカルにコピーしてから処理してみてはどうでしょうか