質問編集履歴

1

内容の修正

2020/09/16 05:24

投稿

j-nagnn
j-nagnn

スコア21

test CHANGED
@@ -1 +1 @@
1
- Ajaxで非同期通信ファイルアップロ実現させたい
1
+ Ajaxで非同期通信のタの受け渡したい
test CHANGED
@@ -1,6 +1,6 @@
1
1
  Ajaxをつかって、PHP側にファイルのフルパスやファイル名などの情報を送りたいです。
2
2
 
3
- ですが、下記の参考サイトを手本にやってみても、ファイル名前などを送れず、さらPHP側に処理が行こともありませんでした。
3
+ ですが、下記の参考サイトを手本にやってみても、Ajax'data'記述した情報がPHP側で受け取ってませんでした。
4
4
 
5
5
 
6
6
 
@@ -8,9 +8,9 @@
8
8
 
9
9
  [Ajaxでファイルをアップロード](https://qiita.com/yasumodev/items/cffb735f46ffd489a4db)
10
10
 
11
+ [PHP×jQuery(JS)×JSONでデータの送受信](https://qiita.com/Schwl_Freiheit/items/9a01985d220d8984548b)
11
12
 
12
-
13
- 比べてみてもid名やurl以外の違いはみつけられませんでした。そして、なぜPHP側に処理がいかないのかも不思議です。
13
+ 比べてみてもid名やurl以外の違いはみつけられませんでした。
14
14
 
15
15
  分かる方、改善策があるのか教えてほしいです。
16
16
 
@@ -26,11 +26,13 @@
26
26
 
27
27
  <?php
28
28
 
29
- echo $this->Form->create('csvF', array('type' => 'file','id'=>'fup','method'=>'post','enctype'=>"multipart/form-data"));
29
+ echo $this->Form->create(false, array('type' => 'file','id'=>"my_form"));
30
30
 
31
- echo $this->Form->input('csvアップロード', array('type' => 'file', 'name'=>'csvF','class'=>'insrtcsv','accept'=>'.csv'));
31
+ echo $this->Form->input('CsvFile', array('type' => 'file','class'=>'insrtcsv','id'=>'fup','accept'=>'text/csv'));
32
32
 
33
- echo $this->Form->submit('データインポート',array('class'=>'newcsv','onclick'=>"file_upload()"));
33
+ echo $this->Form->submit('インポート',array('class'=>'newcsv','onclick'=> "file_upload()"));
34
+
35
+ echo $this->Form->end() ;
34
36
 
35
37
  ?>
36
38
 
@@ -52,29 +54,31 @@
52
54
 
53
55
  // フォームデータを取得
54
56
 
55
- var formdata = new FormData($('#fup').get(0));
57
+ var formdata = new FormData($('#my_form')[0]);//クラスのインデックス0番目
56
58
 
57
-
59
+ var send_data = {"f":formdata,"m":"成功しました。"}
60
+
61
+
58
62
 
59
63
  // POSTでアップロード
60
64
 
61
- $.ajax({
65
+ $.ajax({
62
66
 
63
- url:'./csv_insert',
67
+ url:'/Bank/csv_insert',
64
68
 
65
69
  async: true,
66
70
 
67
71
  type: "POST",
68
72
 
69
- data: {
73
+ cache: false,
70
74
 
71
- f: formdata,
75
+ processData: false,
72
76
 
73
- m: '取り込みに成功しました'
77
+ contentType: false,
74
78
 
75
- },
79
+ data:send_data,
76
80
 
77
- dataType : "html"
81
+ dataType : "json"
78
82
 
79
83
  })
80
84
 
@@ -108,123 +112,31 @@
108
112
 
109
113
  try {
110
114
 
115
+ $MM = "読み込めない";
116
+
111
117
  //ファイルの読み込み
112
118
 
113
- $f = $this->request->data('f');
119
+ if($this->request->is('ajax')){
114
120
 
115
- $file_tmp = $_FILES['csvF']['tmp_name']; //一時保存ファイル名
121
+ $f = $this->request->data['CsvFile']['f'];
116
122
 
123
+ $MM = $this->request->data['CsvFile']['m'];//一時保存ファイル名
124
+
125
+ }
126
+
117
- $file_name = $_FILES['csvF']['name'];//ファイル名
127
+ $file_name = $f['name'];//ファイル名
128
+
129
+ $file_tmp = $f['tmp_name']
118
130
 
119
131
  $ckdir = realpath(TMP."/upcsv")."/".$file_name;//サーバアップロード用
120
132
 
121
- move_uploaded_file($file_tmp, $ckdir);//アップロードファイルをサーバーに保存&以降はこのファイルを処理に使う
133
+ move_uploaded_file($file_tmp, $ckdir);
122
134
 
123
135
 
124
136
 
125
-
137
+
126
138
 
127
- if (is_uploaded_file($ckdir)) {
128
-
129
- $FlagInport = TRUE;
130
-
131
- $csvmsg = $this->request->data['m'];
132
-
133
- $row = 1;
134
-
135
- // ファイルが存在しているかチェックする
136
-
137
- if (($handle = fopen($ckdir, "r")) !== FALSE) {
138
-
139
- // 1行ずつfgetcsv()関数を使って読み込む
140
-
141
- $csvdt = array();
142
-
143
- while (($data = fgets($handle))) {//カンマ(,)区切りでデータを1行ずつ読み込み
144
-
145
- if ($row == 1) {
146
-
147
- $ftitle = explode(",", trim($data));
148
-
149
- $csvttl = array('バイクコード', 'バイク名称', '製造会社'); //想定しているCSVのタイトル行(順番固定)
150
-
151
-
152
-
153
- $btitle = $ftitle == $csvttl;
154
-
155
-
156
-
157
- if ($btitle === FALSE) {
158
-
159
- $FlagInport = FALSE;
160
-
161
-
162
-
163
- }
164
-
165
- } else {
166
-
167
- $y = 0;
168
-
169
- $fdata = explode(",", trim($data)); //カンマでデータを分割
170
-
171
- foreach ($fdata as $value) {
172
-
173
-
174
-
175
-
176
-
177
- $csvdt[$row][$y] = $value;
178
-
179
-
180
-
181
- $y++;
182
-
183
- }
184
-
185
- $this->log($csvdt, 'debug');
186
-
187
- }
188
-
189
- //読み込み対象外のデータがあった場合
190
-
191
- if ($FlagInport == FALSE) {
192
-
193
-
194
-
195
- $csvmsg = '取り込みに失敗しました';
196
-
197
-
198
-
199
- break;
200
-
201
- }
202
-
203
- $row++;
204
-
205
- //非同期処理
206
-
207
- }
208
-
209
- if($FlagInport == TRUE){
210
-
211
- $Binsert = $this->csv_db_insert($csvdt, $row);
212
-
213
- }
214
-
215
-
216
-
217
- }
218
-
219
- fclose($handle);
220
-
221
-
222
-
223
- }
224
-
225
- if($Binsert == FALSE){ $csvmsg = '取り込みに失敗しました';}
226
-
227
- return json_encode($csvmsg);
139
+ return json_encode($MM);
228
140
 
229
141
 
230
142