Загрузка файлов является обычным требованием во многих приложениях, и Dart предоставляет мощный HTTP-пакет, который упрощает этот процесс. В этой статье мы рассмотрим несколько способов загрузки файлов с помощью пакета Dart HTTP. Мы рассмотрим различные сценарии, такие как загрузка одного файла, нескольких файлов и добавление дополнительных параметров в запрос. Давайте погрузимся!
Метод 1: загрузка одного файла
Чтобы загрузить один файл с помощью пакета Dart HTTP, выполните следующие действия:
-
Импортировать необходимые пакеты:
import 'dart:io'; import 'package:http/http.dart' as http;
-
Создайте функцию для загрузки файлов:
Future<void> uploadFile(File file) async { var url = Uri.parse('https://example.com/upload'); var request = http.MultipartRequest('POST', url); var fileStream = http.ByteStream(file.openRead()); var length = await file.length(); var multipartFile = http.MultipartFile('file', fileStream, length, filename: file.path.split('/').last); request.files.add(multipartFile); var response = await request.send(); if (response.statusCode == 200) { print('File uploaded successfully'); } else { print('File upload failed'); } }
-
Пример использования:
File file = File('/path/to/file.jpg'); await uploadFile(file);
Метод 2: загрузка нескольких файлов
Чтобы загрузить несколько файлов, измените предыдущий метод следующим образом:
-
Измените сигнатуру функции:
Future<void> uploadFiles(List<File> files) async { // ... }
-
Обновите реализацию функции:
var url = Uri.parse('https://example.com/upload'); var request = http.MultipartRequest('POST', url); for (var file in files) { var fileStream = http.ByteStream(file.openRead()); var length = await file.length(); var multipartFile = http.MultipartFile('files', fileStream, length, filename: file.path.split('/').last); request.files.add(multipartFile); } var response = await request.send(); // ...
-
Пример использования:
List<File> files = [ File('/path/to/file1.jpg'), File('/path/to/file2.jpg'), File('/path/to/file3.jpg'), ]; await uploadFiles(files);
Метод 3: добавление дополнительных параметров
Иногда вам может потребоваться отправить дополнительные параметры вместе с запросом на загрузку файла. Вот как этого можно добиться:
-
Изменить сигнатуру функции:
Future<void> uploadFileWithParams(File file, Map<String, String> params) async { // ... }
-
Обновите реализацию функции:
var url = Uri.parse('https://example.com/upload'); var request = http.MultipartRequest('POST', url); // Add additional parameters params.forEach((key, value) { request.fields[key] = value; }); // Add file to request var fileStream = http.ByteStream(file.openRead()); var length = await file.length(); var multipartFile = http.MultipartFile('file', fileStream, length, filename: file.path.split('/').last); request.files.add(multipartFile); var response = await request.send(); // ...
-
Пример использования:
File file = File('/path/to/file.jpg'); Map<String, String> params = { 'title': 'My File', 'description': 'An example file upload', }; await uploadFileWithParams(file, params);
В этой статье мы рассмотрели различные способы загрузки файлов с помощью пакета Dart HTTP. Мы рассмотрели загрузку одного файла, нескольких файлов и добавление дополнительных параметров в запрос. Следуя этим примерам, вы сможете легко интегрировать функцию загрузки файлов в свои приложения Dart или Flutter. Приятного кодирования!