カテゴリ: 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のフォーム入力を再利用しよう!初心者でもわかるフィールドコンポーネント化の考え方
New2
React
Reactでできること一覧!初心者でもわかるWebアプリ・スマホアプリ・PWAの活用方法
New3
React
React.jsが人気な理由!VueやAngularとの違いを初心者向けに徹底比較
New4
Next.js
Next.js×StorybookでUI開発環境を整える方法!初心者でもわかるNext.jsの環境構築
人気記事
No.1
Java&Spring記事人気No1
React
Reactでキーボードイベントを活用する方法!onKeyDown, onKeyUp, onKeyPressを初心者向けに解説
No.2
Java&Spring記事人気No2
React
ReactのPresentational Componentを完全ガイド!初心者でもわかるStateを持たないコンポーネントの特徴
No.3
Java&Spring記事人気No3
React
Reactでフォーカスイベントを制御する方法!onFocusとonBlurを初心者向けに解説
No.4
Java&Spring記事人気No4
React
ViteでReact開発環境を構築する手順を完全ガイド!初心者でもできるReactの環境構築
No.5
Java&Spring記事人気No5
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.6
Java&Spring記事人気No6
Next.js
Next.js Server Componentsのメリット・デメリットを完全解説!初心者でもわかるNext.jsの基本
No.7
Java&Spring記事人気No7
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.8
Java&Spring記事人気No8
React
Reactのカードコンポーネントを汎用的に設計する方法!初心者でもわかる再利用の考え方