

AngularJSのajaxを用いて、ファイルのアップロードを行いたいのですが、色々検索してみたやり方だと、

[code]

    headers:{"Content-type":undefined}
    ,transformRequest: null
    
[/code]

というように、ヘッダーに「undefined」と指定すればよい、と記載されているサイトが多くありました。

ただ、AngularJSを使用しているのがスマホアプリで、ファイルを受け取るPHPファイルはサーバー側にあるため、クロスドメインの問題が発生してしまいます。

通常のテキストのやりとりは、

[code]

    method: 'POST',
    headers: {
    'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
    },
    transformRequest: $httpParamSerializerJQLike,
    url: url,
    data: {
    post_data: post_data
    }
    
[/code]

という風に設定し、POSTされるPHPファイルの先頭に、

[code]

    header( 'Access-Control-Allow-Origin: *' );
    
[/code]

を挿入して、クロスドメイン問題を回避しております。

上記のクロスドメイン問題の回避方法のまま、ファイルのアップロードしてファイル名を、

[code]

    $filename = $_FILES[ 'post_data' ][ 'fle_up_file_name' ][ 'name' ]; 
    
[/code]

というようにして受け取っても、$filenameが空のままになります。

ajax通信を行う前のpost_dataの中身を確認したところ、きちんとファイルの各種情報が入っているのは確認が取れるのですが、どうすればクロスドメイン問題を回避しつつ、AngularJSのajaxを用いてファイルのアップロードをすれば良いかわかりません...


CC BY-SA 4.0
2019-04-17T01:28:14.330
54226
2019-04-17T01:28:14.330
32949
question
javascript jquery angularjs ajax
AngularJSでファイルアップロードとクロスドメイン問題