カテゴリ: 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の条件分岐の使い方を完全ガイド!初心者でもわかるReactの条件分岐
New2
React
TypeScriptでuseEffectを型安全に使う方法を完全解説!初心者でもわかるReactの基本
New3
React
ReactでAxiosを使ったファイルアップロードの実装方法を完全解説!初心者でもできるAPI通信
New4
Next.js
Next.js Pages RouterのAPI Routesの仕組みを完全ガイド!初心者でもわかるNext.jsのサーバー処理
人気記事
No.1
Java&Spring記事人気No1
React
ReactでonChangeイベントを使ってフォーム入力値を管理する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.3
Java&Spring記事人気No3
React
ViteでReact開発環境を構築する手順を完全ガイド!初心者でもできるReactの環境構築
No.4
Java&Spring記事人気No4
React
ReactのPropsを使ってコンポーネントの表示を動的に切り替える方法を解説!初心者でもわかるReact入門
No.5
Java&Spring記事人気No5
React
Reactのチェックボックス入力を完全解説!初心者でもわかるReactフォーム処理
No.6
Java&Spring記事人気No6
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.7
Java&Spring記事人気No7
Next.js
Next.jsのApp RouterとPages Routerの役割の違いを完全解説!初心者でもわかるNext.jsの基本概念
No.8
Java&Spring記事人気No8
React
Reactのラジオボタン選択を完全解説!初心者でもわかるReactフォーム処理