AngularJSのajaxを用いて、ファイルのアップロードを行いたいのですが、色々検索してみたやり方だと、
AngularJs
1headers:{"Content-type":undefined} 2,transformRequest: null
というように、ヘッダーに「undefined」と指定すればよい、と記載されているサイトが多くありました。
ただ、AngularJSを使用しているのがスマホアプリで、ファイルを受け取るPHPファイルはサーバー側にあるため、クロスドメインの問題が発生してしまいます。
通常のテキストのやりとりは、
AngularJs
1method: 'POST', 2headers: { 3 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8' 4}, 5 transformRequest: $httpParamSerializerJQLike, 6url: url, 7data: { 8 post_data: post_data 9}
という風に設定し、POSTされるPHPファイルの先頭に、
php
1header( 'Access-Control-Allow-Origin: *' );
を挿入して、クロスドメイン問題を回避しております。
上記のクロスドメイン問題の回避方法のまま、ファイルのアップロードしてファイル名を、
php
1$filename = $_FILES[ 'post_data' ][ 'fle_up_file_name' ][ 'name' ];
というようにして受け取っても、$filenameが空のままになります。
ajax通信を行う前のpost_dataの中身を確認したところ、きちんとファイルの各種情報が入っているのは確認が取れるのですが、どうすればクロスドメイン問題を回避しつつ、AngularJSのajaxを用いてファイルのアップロードをすれば良いかわかりません...
あなたの回答
tips
プレビュー