WebAPIを使用してIonicアプリケーションにファイルをアップロードする

imlim

私の問題は以下の通りです。

ボードの画像を追加する必要があるWEBAPIを提供しました。

私がしなければならないこと?

  • ユーザーは電話から画像を選択できるはずです
  • ユーザーはボードの名前を追加できます
  • ユーザーが送信をクリックすると、入力されたボード名とボード画像は、PUTの方法でWebAPIを使用して投稿する必要があります。以下はWEBAPIの詳細です

WEBAPIの詳細

ヘッダ

  • URL:https//example.com
  • コンテンツタイプ:| コンテンツタイプ|
  • 方法:PUT

データ

  • board_id:321
  • board_title:| タイトル|
  • board_background:| ファイル|

cordovaImagePickerプラグインを使用して画像を選択しましたが、サーバーへのアップロードに行き詰まりました。

Cordovaファイル転送プラグインを使用できますが、画像を保存する場所が指定されていないため、この場合は役に立ちません。すべてのファイル管理はWEBAPIによって行われ、データを使用してファイルを投稿するだけです。

imlim

多くの解決策を試した後、私は以下の答えを持ってきました。

Board.html

    <ion-view>
        <ion-nav-bar class="bar">
            <ion-nav-title>
                <h1 class="title">
                    Create Board
                </h1>
            </ion-nav-title>
        </ion-nav-bar>
        <form name="boardForm" ng-submit="addBoard(data)">
            <ion-content padding="false" scroll="true" has-bouncing="false">
                <div id="form">
                    <div style="text-align: center; padding-top: 2%; padding-bottom: 2%;">
                        <div id="image-preview">
                            <label for="image-upload" id="image-label"><img src="{{ImagePrefix}}/task_plus.png" alt=""/></label>
                            <input type="file" name="board_background" id="image-upload" file-model="data.board_background">
                        </div>
                        <p>Add Cover</p>
                    </div>
                    <ion-list>
                        <ion-item style="background-color: #F8F8F8;">
                            <label class="control-label" for="board_name">BOARD NAME</label>
                        </ion-item>
                        <ion-item ng-class="{true:'error'}[submitted && boardForm.board_title.$invalid]">
                            <input type="text" id="board_name" ng-model="data.board_title"
                                   placeholder="Add a Name" name="board_title" required>

                            <p ng-show="submitted && boardForm.board_title.$error.required">
                                Please enter a board name
                            </p>
                        </ion-item>
                    </ion-list>
                </div>
            </ion-content>
            <ion-footer-bar>
                <button class="button button-block control-button bottomOfPage"
                        ng-click="submitted = true">
                    CREATE
                </button>
            </ion-footer-bar>
        </form>
    </ion-view>

指令

    .directive('fileModel', ['$parse', function ($parse) {
            return {
                restrict: 'A',
                link: function (scope, element, attrs) {
                    var model = $parse(attrs.fileModel);
                    var modelSetter = model.assign;

                    element.bind('change', function () {
                        scope.$apply(function () {
                            modelSetter(scope, element[0].files[0]);
                        });
                    });
                }
            };
        }])

コントローラ

    .controller('ManageBoardCtrl', function ($scope, $http, $ionicPopup, $state, BoardService) {
            $scope.submitted = false;
            $scope.data = {};
            $scope.addBoard = function(formData) {
                BoardService.CreateBoard(formData).then(function(response) {
                    if (response === "success") {
                        $ionicPopup.alert({
                            title: "Success",
                            template: "Board created successfully"
                        });
                    }
                }, function (response) {
                    $ionicPopup.alert({
                        title: "Failed",
                        template: "Somethings wrong, Can not create boards at now."
                    });
                });
            }
        })

サービス

    .service('BoardService', function ($q, $http) {
            var getUrl = API_URL + "boards";

            var createBoard = function (fData) {
                var formData = new FormData();
                formData.append("board_title", fData.board_title);
                formData.append("board_background", fData.board_background);

                return $q(function (resolve, reject) {
                    $http({
                        transformRequest: angular.identity,
                        method: 'POST',
                        url: getUrl,
                        headers: { 'Content-Type': undefined },
                        data: formData
                    }).success(function (response) {
                        if (response.success === true) {
                            resolve('success');
                        } else {
                            reject('fail');
                        }
                    }).error(function () {
                        reject('requesterror');
                    });
                });
            };

            return {
                CreateBoard: createBoard
            };
        })

アンドロイド/ iPhone用のアプリケーションをデプロイした後、ファイル選択はOSに基づいて画像の閲覧を処理します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

POSTを使用してFlaskアプリケーションにファイルをアップロードするときの308リダイレクト

分類Dev

アップロードしたファイルをWebアプリケーションに保存する場所

分類Dev

Windowsアプリケーションc#を使用してテキストファイルをmysqlにアップロードする

分類Dev

JMeterを使用してJSFアプリケーションにファイルをアップロードする方法

分類Dev

AndroidアプリケーションからPiratedBoxにファイルをアップロードします

分類Dev

AndroidアプリケーションからFirebaseStorageにファイルをアップロードする

分類Dev

Qt5:qDebug()を使用してファイル、マルチスレッドアプリケーションにログインする方法

分類Dev

Windowsアプリケーションでwpfとc#を使用してファイルをアップロードする方法

分類Dev

AngularJS:$ resourceを使用してファイルをアップロードする(ソリューション)

分類Dev

rocketeerを使用してアプリケーション構成ファイルをデプロイする方法は?

分類Dev

管理者として実行中のアプリケーションにファイルをドラッグアンドドロップします

分類Dev

モーダルなしでサーバーにmvc4Webアプリケーションをアップロードするファイル

分類Dev

Azureロジックアプリのアクションを使用してブラウザーにファイルをダウンロードする方法

分類Dev

webplayerを使用して埋め込まれているunity3dアプリケーションにファイルをロードする

分類Dev

画像ファイルをエクスプローラーからアプリケーションにドラッグアンドドロップします

分類Dev

フロントエンドアプリケーションからws-federationを使用してアプリケーションにサインインする

分類Dev

サーバー側アプリケーションから生成された署名付きURLを使用して、AndroidからS3サーバーにファイル(ビデオファイル)をアップロードする

分類Dev

WebApi、ajaxを使用してファイルをアップロードする

分類Dev

アップロードしたファイルをサーブレットアプリケーションに保存するための推奨される方法

分類Dev

GolangアプリケーションをVPSにアップロードしてデプロイする

分類Dev

axiosを介してWebApiにファイルをアップロードする

分類Dev

Pythonを使用してAWS-s3バケットの異なるリージョンにファイルをアップロードする方法

分類Dev

AndroidアプリケーションからWordPressRESTAPIを介してファイルをアップロードする

分類Dev

warパッケージをビルドした後にJavaアプリケーションでプロパティファイルを追加/編集する方法

分類Dev

JProfilerを使用してデバッグモードでJavaアプリケーションをプロファイリングする方法

分類Dev

application.propertiesファイルの動的エンドポイントを使用してspringbootアプリケーションをパッケージ化する方法

分類Dev

Playアプリケーションを介してjsonファイルをCassandraDBにアップロード中にエラーが発生しました

分類Dev

IntelVtuneを使用してQtCreatorからアプリケーションをプロファイリングする

分類Dev

tizenスタジオで証明書のプロファイルを使用してアプリケーションパッケージに署名します

Related 関連記事

  1. 1

    POSTを使用してFlaskアプリケーションにファイルをアップロードするときの308リダイレクト

  2. 2

    アップロードしたファイルをWebアプリケーションに保存する場所

  3. 3

    Windowsアプリケーションc#を使用してテキストファイルをmysqlにアップロードする

  4. 4

    JMeterを使用してJSFアプリケーションにファイルをアップロードする方法

  5. 5

    AndroidアプリケーションからPiratedBoxにファイルをアップロードします

  6. 6

    AndroidアプリケーションからFirebaseStorageにファイルをアップロードする

  7. 7

    Qt5:qDebug()を使用してファイル、マルチスレッドアプリケーションにログインする方法

  8. 8

    Windowsアプリケーションでwpfとc#を使用してファイルをアップロードする方法

  9. 9

    AngularJS:$ resourceを使用してファイルをアップロードする(ソリューション)

  10. 10

    rocketeerを使用してアプリケーション構成ファイルをデプロイする方法は?

  11. 11

    管理者として実行中のアプリケーションにファイルをドラッグアンドドロップします

  12. 12

    モーダルなしでサーバーにmvc4Webアプリケーションをアップロードするファイル

  13. 13

    Azureロジックアプリのアクションを使用してブラウザーにファイルをダウンロードする方法

  14. 14

    webplayerを使用して埋め込まれているunity3dアプリケーションにファイルをロードする

  15. 15

    画像ファイルをエクスプローラーからアプリケーションにドラッグアンドドロップします

  16. 16

    フロントエンドアプリケーションからws-federationを使用してアプリケーションにサインインする

  17. 17

    サーバー側アプリケーションから生成された署名付きURLを使用して、AndroidからS3サーバーにファイル(ビデオファイル)をアップロードする

  18. 18

    WebApi、ajaxを使用してファイルをアップロードする

  19. 19

    アップロードしたファイルをサーブレットアプリケーションに保存するための推奨される方法

  20. 20

    GolangアプリケーションをVPSにアップロードしてデプロイする

  21. 21

    axiosを介してWebApiにファイルをアップロードする

  22. 22

    Pythonを使用してAWS-s3バケットの異なるリージョンにファイルをアップロードする方法

  23. 23

    AndroidアプリケーションからWordPressRESTAPIを介してファイルをアップロードする

  24. 24

    warパッケージをビルドした後にJavaアプリケーションでプロパティファイルを追加/編集する方法

  25. 25

    JProfilerを使用してデバッグモードでJavaアプリケーションをプロファイリングする方法

  26. 26

    application.propertiesファイルの動的エンドポイントを使用してspringbootアプリケーションをパッケージ化する方法

  27. 27

    Playアプリケーションを介してjsonファイルをCassandraDBにアップロード中にエラーが発生しました

  28. 28

    IntelVtuneを使用してQtCreatorからアプリケーションをプロファイリングする

  29. 29

    tizenスタジオで証明書のプロファイルを使用してアプリケーションパッケージに署名します

ホットタグ

アーカイブ