FlutterでMultipartFile配列を追加する方法


まず、ファイルを選択するために、ユーザーにファイル選択ダイアログを表示する必要があります。Flutterには、file_pickerパッケージを使用することで簡単にファイル選択機能を実装することができます。以下は、file_pickerパッケージを使用してファイルを選択する例です。

import 'package:file_picker/file_picker.dart';
// ファイル選択ダイアログを表示してファイルを選択する
List<MultipartFile> selectedFiles = [];
void selectFiles() async {
  FilePickerResult? result = await FilePicker.platform.pickFiles(
    allowMultiple: true,
  );
  if (result != null) {
    selectedFiles.clear();
    selectedFiles.addAll(result.files.map((file) {
      // 選択されたファイルをMultipartFileに変換する
      return MultipartFile.fromBytes(
        file.bytes!,
        filename: file.name,
      );
    }));
  }
}

上記のコードでは、FilePicker.platform.pickFilesメソッドを使用してファイル選択ダイアログを表示し、allowMultipleパラメータをtrueに設定することで複数のファイルの選択を許可しています。選択されたファイルはselectedFilesリストに追加され、MultipartFile.fromBytesメソッドを使用してMultipartFileに変換されます。

次に、MultipartFile配列を使用してファイルをアップロードする方法を示します。Flutterには、httpパッケージを使用してHTTPリクエストを送信する機能が組み込まれています。以下は、MultipartFile配列を使用してファイルをアップロードする例です。

import 'package:http/http.dart' as http;
void uploadFiles() async {
  var request = http.MultipartRequest(
    'POST',
    Uri.parse('http://example.com/upload'),
  );
  // MultipartFile配列をリクエストに追加する
  for (var file in selectedFiles) {
    request.files.add(file);
  }
  var response = await request.send();
  if (response.statusCode == 200) {
    // アップロード成功
    print('Files uploaded successfully');
  } else {
    // アップロード失敗
    print('Failed to upload files');
  }
}

上記のコードでは、http.MultipartRequestクラスを使用してマルチパートリクエストを作成し、request.files.addメソッドを使用してMultipartFile配列をリクエストに追加しています。request.sendメソッドを呼び出すことでリクエストが送信され、レスポンスが取得できます。

これらのコード例を使用することで、FlutterでMultipartFile配列を使用して複数のファイルをアップロードすることができます。必要に応じて、サーバーサイドの実装も適切に行う必要があります。