[解決済み] AngularJS: マルチパートフォームで簡単なファイルアップロードを実装するには?
2022-05-15 09:39:17
質問
AngularJSからnode.jsサーバーにシンプルなマルチパートフォームを投稿したいです。 フォームには、1つの部分にJSONオブジェクトと他の部分に画像が含まれている必要があります。 (現在、$resourceでJSONオブジェクトのみを投稿しています)
input type="file"で始めるべきと考えましたが、AngularJSがそれにバインドできないことがわかりました。
私が見つけたすべての例は、ドラッグ&ドロップのためのjQueryプラグインをラップするためのものです。 私は1つのファイルの単純なアップロードをしたいのです。
私はAngularJSの初心者で、独自のディレクティブを書くことに全く違和感を感じません。
どのように解決するのですか?
実際に動作するソリューションで、angularjs以外に依存するものはありません(v.1.0.6でテスト済み)。
html
<input type="file" name="file" onchange="angular.element(this).scope().uploadFile(this.files)"/>
Angularjs (1.0.6)でサポートされていない ng-model をサポートしていないので、ユーザーから選択されたすべての(最終的に)ファイルを渡す、"native-way"でそれを実行する必要があります。
コントローラ
$scope.uploadFile = function(files) {
var fd = new FormData();
//Take the first selected file
fd.append("file", files[0]);
$http.post(uploadUrl, fd, {
withCredentials: true,
headers: {'Content-Type': undefined },
transformRequest: angular.identity
}).success( ...all right!... ).error( ..damn!... );
};
クールな部分は 未定義 のコンテントタイプと transformRequest: angular.identity で、$httpに正しい"content-type"を選択する能力を与え、マルチパートデータを扱うときに必要な境界を管理することができます。
関連
-
[解決済み] Angular ng-repeatの条件付きラップアイテム(ng-repeatのグループアイテム)。
-
[解決済み] AngularJSでkeypressイベントを使用するには?
-
[解決済み] AngularJSの.$on()とは?
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み] AngularJSを使用して、ブラウザのコンソールで$scope変数にアクセスするにはどうすればよいですか?
-
[解決済み] AngularJSで$scope.$watchと$scope.$applyを使用するにはどうすればよいですか?
-
[解決済み] 検索エンジンはAngularJSアプリケーションをどのように扱っているのか?
-
[解決済み] AngularJSのng-repeatでキーと値を反復処理する方法は?
-
[解決済み] AngularJSでチェックボックスの値のリストにバインドするにはどうすればいいですか?
-
[解決済み】AngularJSを使ったファイルのアップロード
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] `ui-router` $stateParams vs. $state.params
-
[解決済み】Angular ui-routerで$stateメソッドを$stateChangeStart toStateとfromStateで使用する。
-
[解決済み] ディレクティブ '...' が要求するコントローラ 'ngModel' が見つかりません。
-
[解決済み] AngularJS 。scope.apply()呼び出し時の$digest already in progressエラーを防ぐ。
-
[解決済み] どのように$state.goにパラメータを追加しますか?
-
[解決済み] angular.serviceとangular.factoryの比較
-
[解決済み] ng-classを使った複数クラスの追加
-
[解決済み] 条件に応じて特定のルートにリダイレクトする機能
-
[解決済み] `<input type="file"/>` の ng-model (ディレクティブ DEMO 付き)
-
[解決済み】AngularJSを使ったファイルのアップロード