React は antd のアップロード コンポーネントを使用してファイル フォーム送信機能を実装します (完全なコード)

React は antd のアップロード コンポーネントを使用してファイル フォーム送信機能を実装します (完全なコード)

私はプロジェクトを実行するために react を使い始めたばかりで、非常に未熟で完全な初心者です。私が書く内容は非常にシンプルでわかりやすいので、初心者でも読むことができます。

プロジェクトでは、フォームでの添付ファイルの送信を実装する必要があり、アップロードされたファイルは個別に保存されず、インターフェースが呼び出されます。

'antd' から { フォーム、ボタン、アップロード } をインポートします。
'@ant-design/icons' から UploadOutlined をインポートします。
  
  const normFile = (e) => {
    console.log('アップロードイベント:', e);
    Array.isArray(e) の場合 {
      e を返します。
    }
    e && e.fileList を返します。
  };
  constデモ = () => {
    const onFinish = (値) => {
      console.log('フォームの受信値: ', values);
    };
  
    戻る (
      <フォーム
        名前="validate_other"
        onFinish={onFinish}
        初期値={{
          '入力番号': 3,
          'チェックボックスグループ': ['A', 'B'],
          レート: 3.5、
        }}
      >
        <フォーム.アイテム
          名前="アップロード"
          label="アップロード"
          valuePropName="ファイルリスト"
          getValueFromEvent={normFile}
        >
          <アップロード name="logo" action="/upload.do" listType="picture">
            <Button icon={<UploadOutlined />}>クリックしてアップロード</Button>
          </アップロード>
        </フォーム.アイテム>
      </フォーム>
    );
  };
  
  ReactDOM.render(<Demo />, mountNode);

これはファイルアップロード機能を含むフォームです。 (実際、ここでのコードは Antd の公式ドキュメントからの例です。冗長な部分のみを削除し、残りはそのまま残しました)。

以下説明です。

まず、ファイルが自動的にアップロードされないようにする方法を考える必要があります。 antd ドキュメントには beforeUpload というメソッドが記載されています。beforeUpload メソッドが false を返すと、ファイルのアップロードは停止します。

上記により、ファイルの自動アップロードが停止されます。次に、アップロードされたファイルを取得し、バックエンドに渡されるパラメータに保存する方法を検討します。

このコードの部分はアップロード コード メソッドです。ファイルをアップロードしてフォームと一緒に送信する必要があるためです。そこで、このメソッドにいくつか変更を加え、ファイルを formData オブジェクトに保存します。ここではまず、バックエンドにファイルを転送するために主に使用される formData オブジェクトについて説明します。

まず新しい formData オブジェクトを作成し、そこにファイルを追加します。これにより、アップロードされたファイルは formData に既に保存されます。

フォーム内の他のデータも同様に formData に保存でき、formData はバックエンドに渡すことができます。

現時点で注意が必要な別の問題があります。

フェッチ(url, {

        //リクエストメソッドを取得: 'POST',

        本文: フォームデータ、

})

または

 axios({ //axios
        メソッド: 'post'、
        URL: URL、
        データ: フォームデータ、
    })
    .then(関数 (応答) {
        console.log(応答);
    })
    .catch(関数 (エラー) {
        コンソール.log(エラー);
    });

パラメータを正常に渡すには設定する必要があります。そうしないと、インターフェイスを呼び出すときにパラメータが正常に渡されません。

パラメータを正常に送信すると、どのように見えるでしょうか? 関連するページで F12 をクリックすると、ネットワークが表示され、下部にフォーム データ列が表示され、渡されたすべてのパラメータが表示されます。

最終的なコードは次のようになります。

'antd' から { フォーム、ボタン、アップロード } をインポートします。
'@ant-design/icons' から UploadOutlined をインポートします。
  
  const normFile = (e) => {
    console.log('アップロードイベント:', e);
    Array.isArray(e) の場合 {
      e を返します。
    }
    e && e.fileList を返します。
  };
  定数 beforeUpload = ({fileList}) => {
      false を返します。
  }
  constデモ = () => {
    const onFinish = (値) => {
      console.log('フォームの受信値: ', values);
    };
  
    戻る (
      <フォーム
        名前="validate_other"
        onFinish={onFinish}
        初期値={{
          '入力番号': 3,
          'チェックボックスグループ': ['A', 'B'],
          レート: 3.5、
        }}
      >
        <フォーム.アイテム
          名前="アップロード"
          label="アップロード"
          valuePropName="ファイルリスト"
          getValueFromEvent={normFile}
        >
          <アップロード名="logo"  
            beforeUpload={beforeUpload}
          >
            <Button icon={<UploadOutlined />}>クリックしてアップロード</Button>
          </アップロード>
        </フォーム.アイテム>
      </フォーム>
    );
  };
  
  ReactDOM.render(<Demo />, mountNode);

これで、Antd のアップロード コンポーネントを使用してフォームと一緒にファイルを送信する方法についての説明は終わりです。React によるファイル フォーム送信コンテンツの実装の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • React 純粋関数コンポーネント setState がページ更新を更新しない問題の解決方法
  • Reactは動的ポップアップウィンドウコンポーネントを実装します
  • React 星評価コンポーネントの実装
  • Reactコンポーネントをフルスクリーンにする方法

<<:  Linux での vi (vim) の新しい使い方のまとめ

>>:  Linux で見つけるためのフレンドリーな代替手段 (fd コマンド)

推薦する

MySQLにおけるトランザクションの永続性実装原理の詳細な説明

序文データベース トランザクションに関して言えば、トランザクションの ACID 特性、分離レベル、解...

適応幅(パーセンテージ)に応じて Div の高さを調整する純粋な CSS

今日のレスポンシブ レイアウトの要件では、サイズを自動的に調整できる多くの要素で高さと幅の適応を実現...

Windows 環境での MySQL の解凍、インストール、バックアップ、復元

システム環境はserver2012です1. MySQLの解凍バージョンをダウンロードし、インストール...

JavaScript DOM オブジェクト操作

目次1. コア1. Domノードを取得する2. ノードの更新2.1 実践演習3. Domノードを削除...

Vue elementUI フォームのネストされたテーブルと各行の検証の詳細な説明

目次エフェクト表示コードリンクキーコード表形式データコンポーネントのネスト検証方法リセット方法完全な...

docker を使用して kafka プロジェクトをデプロイする Centos6 方法の分析

この記事では、Docker を使用して Centos6 に Kafka プロジェクトをデプロイする方...

ユーザーはその理由を知る必要がある

証券会社にいた頃、設計業務が忙しくなかったため、商品のマニュアルを書く役割を担ったことがありました。...

JavaScriptプロトタイプチェーンの詳細な説明

目次1. コンストラクタとインスタンス2. プロパティプロトタイプ3. プロパティ __proto_...

3次元画像配置効果を実現する純粋なCSSのサンプルコード

1. 要素の幅/高さ/パディング/マージンのパーセンテージ基準要素の幅/高さ/パディング/マージンの...

JS配列メソッドsome、every、findの使用に関する詳細

目次1. いくつか2. すべての3. 見つける1. いくつかsome()メソッドは、指定された関数の...

JS 開発効率を上げる4つの超実践的なヒント

目次1. 短絡判定2. オプション連鎖演算子 (?) 3. ヌル合体演算子 (??) 4. 終了関数...

MySQL シリーズ 14 MySQL 高可用性実装

1. 内閣府マスターノードを監視することで、他のスレーブノードへの自動フェイルオーバーを実現できます...

テーブル適応とオーバーフローのいくつかの設定の詳細な説明

1. テーブル リセットの 2 つのプロパティ: ①border-collapse: collaps...

DIV 背景半透明テキスト非半透明スタイル

DIVの背景は半透明ですが、DIV内の文字は半透明ではありませんコードをコピーコードは次のとおりです...

HTML tbody の使用

構造化テーブル (IExplore のみ) 1) 行ごとにグループ化<thead> .....