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 コマンド)

推薦する

Vue3における非親子コンポーネント通信の詳細な説明

目次最初の方法アプリ.vueホーム.vueホームコンテンツ.vueデータの応答性レスポンシブプロパテ...

Mac で Docker を使用して Oracle をデプロイする方法

Mac で Docker を使用して Oracle をデプロイする方法まずdockerをインストール...

WeChat ミニプログラム 宝くじ番号ジェネレーター

この記事では、WeChatアプレットの宝くじ番号ジェネレータの具体的なコードを参考までに紹介します。...

JavaScriptにおけるこのポインティング問題の詳細な説明

序文JS の this ポインターは、初心者にとって常に頭痛の種でした。今日は、これが地面に落ちたと...

MySQL での実行計画の explain コマンド例の詳細な説明

序文explain コマンドは、クエリ オプティマイザーがクエリの実行を決定した方法を確認する主な方...

JavaScript コードベースをよりクリーンにする 5 つの方法

目次1. 短絡や条件文の代わりにデフォルトのパラメータを使用する2. 複数の条件の処理3. スイッチ...

MySQL のストアド プロシージャを使用して 100 万件のレコードをすばやく生成する方法

序文テストを行う際、大量のデータによる負荷に耐えるプロジェクトの能力をテストするために、通常はテスト...

dockerエラーの原因分析 終了しました (1) 4分前

Dockerエラー1. 原因を確認するdocker ログ ネクサス2. エラーの原因OpenJDK ...

CentOS で MySQL 5.1 を 5.5.36 にアップグレードする

CentOS 6.4 環境で MySQL 5.1 を 5.5.36 にアップグレードする手順を記録し...

シンプルなタブバー切り替えコンテンツバーを実装するJavaScript

この記事では、タブバーの切り替えコンテンツバーを簡単に実現するためのJavaScriptの具体的なコ...

ウェブデザインにおけるカラーマッチングの優れた例30選

本日は、色彩の応用に関する優れた事例を 30 件集めて、皆さんにご紹介したいと思います。これらの事例...

数千万のMySQLデータ量を素早くページ分割する方法

序文バックエンド開発では、一度に大量のデータがロードされ、メモリやディスク IO のオーバーヘッドが...

MySQL でのデータベース間クエリの例

序文MySQL では、クロスデータベース クエリは主に 2 つの状況に分けられます。1 つは同じサー...

Nginx の動的および静的分離実装ケースのコード分析

静的と動的の分離動的リクエストと静的リクエストはミドルウェアを通じて分離され、不要なリクエストの消費...

「いいね!」機能では MySQL と Redis のどちらを使用すればよいでしょうか?

目次1. 初心者が陥りがちな間違い2. Iteratorのremove()メソッドを使用する3. f...