AngularJSで$httpを使ったファイルのアップロード時の注意点

AngularJS

formタグには以下enctypeを設定しておく

enctype="multipart/form-data"

 

スクリプトは以下のように記述する。ポイントはContent-typeをundifinedにするところです。$httpのpostはContent-typeがapplication/jsonをデフォルトとしているため、そのままだと画像とかがPOSTされません。undefinedにしておけば、適宜自動的に変更してくれます。

// fromタグのIDからPOSTする情報を取得する。
form = $(formId);
formData = new FormData(form[0]);

// Content-typeをundefinedにする。
$http.post('アップロード先のURL',formData,
{
    headers:{"Content-type":undefined}
    ,transformRequest: null
});