まず、ファイルを選択するために、ユーザーにファイル選択ダイアログを表示する必要があります。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配列を使用して複数のファイルをアップロードすることができます。必要に応じて、サーバーサイドの実装も適切に行う必要があります。