質問編集履歴

3

追加

2021/03/04 08:58

投稿

ykkk
ykkk

スコア91

test CHANGED
File without changes
test CHANGED
@@ -19,6 +19,18 @@
19
19
 
20
20
 
21
21
  ```ここに言語を入力
22
+
23
+ $fileName = $request->file('upload_file')->store('');
24
+
25
+
26
+
27
+ $sjis = file_get_contents(storage_path('app/') . $fileName);
28
+
29
+ $utf8 = mb_convert_encoding($sjis, 'UTF-8', 'SJIS-win');
30
+
31
+ file_put_contents(storage_path('app/') . $fileName.'.utf8', $utf8);
32
+
33
+
22
34
 
23
35
  $fp = fopen(storage_path('app/') . $fileName.'.utf8', 'r');
24
36
 

2

追記

2021/03/04 08:58

投稿

ykkk
ykkk

スコア91

test CHANGED
File without changes
test CHANGED
@@ -46,6 +46,38 @@
46
46
 
47
47
 
48
48
 
49
+ ローカル環境で、本番環境でアップロードできたCSVをアップロードすると
50
+
51
+ '登録に失敗しました。CSVファイルのフォーマットが正しいことを確認してださい。'とエラーメッセージが
52
+
53
+ 出てきます。もちろんDBにも反映されておりません。ログはないように思います。
54
+
55
+
56
+
57
+ エラーはCSVの列が42行ないとエラーになるようになっています。
58
+
59
+ CSVをddで調べたところ37行でした。
60
+
61
+ 0 => "A"
62
+
63
+ 1 => "B"
64
+
65
+ 2 => "C"
66
+
67
+ 3 => "D"
68
+
69
+ 4 => "E"
70
+
71
+ 5 => "F",G""
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ 上記のようにところどころ【5 => "F",G""】のような形になり
80
+
49
- 上記に引かかってしまいます。
81
+ その分列が少なくなってしまっています。
50
82
 
51
83
  本番環境で同じCSVをやると正常に動きます。

1

コード追記

2021/03/04 06:40

投稿

ykkk
ykkk

スコア91

test CHANGED
File without changes
test CHANGED
@@ -15,3 +15,37 @@
15
15
  ローカル環境の問題だと思うのですが、どうすればいいかわかりません。
16
16
 
17
17
  何かお分かりであればご教授頂けないでしょうか?
18
+
19
+
20
+
21
+ ```ここに言語を入力
22
+
23
+ $fp = fopen(storage_path('app/') . $fileName.'.utf8', 'r');
24
+
25
+ $headers = fgetcsv($fp);
26
+
27
+
28
+
29
+ if (42 != count($headers)) {
30
+
31
+ fclose($fp);
32
+
33
+ Storage::delete($fileName);
34
+
35
+
36
+
37
+ $form = new Form();
38
+
39
+ $form->setMessage('danger', '登録に失敗しました。CSVファイルのフォーマットが正しいことを確認してださい。');
40
+
41
+ return view('forms.upload', ['form' => $form]);
42
+
43
+ }
44
+
45
+ ```
46
+
47
+
48
+
49
+ 上記に引っかかってしまいます。
50
+
51
+ 本番環境で同じCSVをやると正常に動きます。