カテゴリ: React 更新日: 2026/02/15

ReactでAxiosを使ったファイルアップロードの実装方法を完全解説!初心者でもできるAPI通信

Axiosでファイルアップロードを実装する方法
Axiosでファイルアップロードを実装する方法

先生と生徒の会話形式で理解しよう

生徒

「先生、Reactで画像とかPDFをアップロードしたいときってどうすればいいんですか?」

先生

「その場合はAxiosを使うと便利ですよ。フォームデータを送信することで、簡単にファイルをサーバーにアップロードできます。」

生徒

「フォームデータって何ですか?」

先生

「フォームデータとは、ユーザーが入力したテキストやファイルをまとめて送信する仕組みのことです。ReactとAxiosを組み合わせると簡単に使えますよ。」

1. ファイルアップロードの基本

1. ファイルアップロードの基本
1. ファイルアップロードの基本

ファイルアップロードは、ユーザーがパソコンやスマートフォンから画像・動画・PDFなどのファイルをサーバーに送る仕組みです。たとえばプロフィール画像を設定するときや、書類を提出するときに使われます。

Reactでは、<input type="file">を使ってファイルを選択し、それをFormDataというオブジェクトに入れてサーバーに送信します。

2. Reactでファイルを選択するフォーム

2. Reactでファイルを選択するフォーム
2. Reactでファイルを選択するフォーム

まずはファイルを選択できるシンプルなフォームを作ります。


import React, { useState } from "react";

function App() {
  const [file, setFile] = useState(null);

  const handleChange = (e) => {
    setFile(e.target.files[0]);
  };

  return (
    <div>
      <h1>ファイルアップロード</h1>
      <input type="file" onChange={handleChange} />
    </div>
  );
}

export default App;
画面に「ファイルを選択」というボタンが表示され、クリックするとPCやスマホからファイルを選べるようになります。

3. Axiosでファイルを送信する

3. Axiosでファイルを送信する
3. Axiosでファイルを送信する

次に、選択したファイルをサーバーに送信します。Axiosを使うと、POSTリクエストでファイルをアップロードできます。


import React, { useState } from "react";
import axios from "axios";

function App() {
  const [file, setFile] = useState(null);

  const handleChange = (e) => {
    setFile(e.target.files[0]);
  };

  const handleUpload = async () => {
    if (!file) return;
    const formData = new FormData();
    formData.append("myFile", file);

    try {
      const response = await axios.post("https://example.com/upload", formData, {
        headers: { "Content-Type": "multipart/form-data" }
      });
      console.log("アップロード成功:", response.data);
    } catch (error) {
      console.error("アップロード失敗:", error);
    }
  };

  return (
    <div>
      <h1>ファイルアップロード</h1>
      <input type="file" onChange={handleChange} />
      <button onClick={handleUpload}>アップロード</button>
    </div>
  );
}

export default App;
ファイルを選択して「アップロード」ボタンを押すと、サーバーにファイルが送信されます。

4. 複数ファイルのアップロード

4. 複数ファイルのアップロード
4. 複数ファイルのアップロード

一度に複数のファイルをアップロードしたい場合は、multiple属性を使います。


<input type="file" multiple onChange={handleChange} />

複数のファイルを選んだ場合、e.target.filesに配列のような形で格納されます。それをFormDataに順番に追加して送信します。

5. アップロードの進捗を表示する

5. アップロードの進捗を表示する
5. アップロードの進捗を表示する

大きなファイルをアップロードするときには、進捗(何%送信されたか)を表示すると親切です。AxiosのonUploadProgressを使うと簡単に進捗を取得できます。


axios.post("https://example.com/upload", formData, {
  headers: { "Content-Type": "multipart/form-data" },
  onUploadProgress: (progressEvent) => {
    const percent = Math.round((progressEvent.loaded * 100) / progressEvent.total);
    console.log(percent + "% アップロード完了");
  }
});
アップロード中に「50%アップロード完了」などの表示ができ、ユーザーに安心感を与えられます。

6. ファイルアップロードの注意点

6. ファイルアップロードの注意点
6. ファイルアップロードの注意点

ファイルアップロードを実装するときは、以下の点に注意しましょう。

  • サーバー側で受け取れるファイル形式やサイズを確認する
  • 大きすぎるファイルはアップロードに失敗することがある
  • セキュリティのためにアップロードしたファイルは必ずチェックする

正しく設定することで、ユーザーが安全にファイルをアップロードできるアプリを作れます。

カテゴリの一覧へ
新着記事
New1
React
ReactのPropsでオブジェクト型を扱う方法を完全ガイド!初心者でもわかる型安全なProps管理
New2
React
Reactの条件分岐の使い方を完全ガイド!初心者でもわかるReactの条件分岐
New3
React
React Context APIの分割方法を解説!パフォーマンスを高めるベストプラクティス
New4
React
Reactの自己終了タグの書き方を完全ガイド!初心者でもわかるimgやinputのJSX記法
人気記事
No.1
Java&Spring記事人気No1
React
Reactの子コンポーネントから親コンポーネントへデータを渡す方法を徹底解説!初心者にもわかるReactのイベントとデータの流れ
No.2
Java&Spring記事人気No2
React
Reactの学習ロードマップ!初心者が最短で習得する流れを完全ガイド
No.3
Java&Spring記事人気No3
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.4
Java&Spring記事人気No4
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.5
Java&Spring記事人気No5
React
ReactのState管理ベストプラクティス!初心者でもわかる再レンダリング最適化の考え方
No.6
Java&Spring記事人気No6
React
React開発におすすめのVSCode拡張機能まとめ!初心者でもすぐ使える便利ツール紹介
No.7
Java&Spring記事人気No7
React
ReactのContext APIでログイン状態を管理する方法を完全解説!初心者でもわかる認証機能の実装
No.8
Java&Spring記事人気No8
Next.js
Next.jsのSSR(Server Side Rendering)入門!Pages Routerとの違いを初心者向けに解説