Ajaxをつかって、PHP側にファイルのフルパスやファイル名などの情報を送りたいです。
ですが、下記の参考サイトを手本にやってみても、Ajaxの'data'に記述した情報がPHP側で受け取ってくれませんでした。
[参考サイト]
Ajaxでファイルをアップロード
PHP×jQuery(JS)×JSONでデータの送受信
比べてみてもid名やurl以外の違いはみつけられませんでした。
分かる方、改善策があるのか教えてほしいです。
[mst.html]
html
1<h1>一覧画面</h1> 2 <br> 3 <?php 4 echo $this->Form->create(false, array('type' => 'file','id'=>"my_form")); 5 echo $this->Form->input('CsvFile', array('type' => 'file','class'=>'insrtcsv','id'=>'fup','accept'=>'text/csv')); 6 echo $this->Form->submit('インポート',array('class'=>'newcsv','onclick'=> "file_upload()")); 7 echo $this->Form->end() ; 8 ?> 9
[list.js]
javascript
1 //ファイルのアップロード 2function file_upload() 3{ 4 // フォームデータを取得 5 var formdata = new FormData($('#my_form')[0]);//クラスのインデックス0番目 6 var send_data = {"f":formdata,"m":"成功しました。"} 7 8 // POSTでアップロード 9 $.ajax({ 10 url:'/Bank/csv_insert', 11 async: true, 12 type: "POST", 13 cache: false, 14 processData: false, 15 contentType: false, 16 data:send_data, 17 dataType : "json" 18 }) 19 .done(function(data, textStatus, jqXHR){ 20 alert(data); 21 }) 22 .fail(function(jqXHR, textStatus, errorThrown){ 23 console.log("jqXHR : " + jqXHR.status); // HTTPステータスが取得 24 console.log("textStatus : " + textStatus); // タイムアウト、パースエラー 25 console.log("errorThrown : " + errorThrown.message); // 例外情報 26 }); 27} 28
[ListController.php]
php
1 public function csv_insert() { 2 try { 3$MM = "読み込めない"; 4 //ファイルの読み込み 5 if($this->request->is('ajax')){ 6 $f = $this->request->data['CsvFile']['f']; 7 $MM = $this->request->data['CsvFile']['m'];//一時保存ファイル名 8 } 9 $file_name = $f['name'];//ファイル名 10 $file_tmp = $f['tmp_name'] 11 $ckdir = realpath(TMP."/upcsv")."/".$file_name;//サーバアップロード用 12 move_uploaded_file($file_tmp, $ckdir); 13 14 15 return json_encode($MM); 16 17 } catch (Exception $ex) { 18 $this->log($ex, 'error'); 19 } 20 }
フレームワーク:cakePHP2.10
開発環境:NetBeans
ブラウザ:GogleChrome