flutter上传表单数据
时间: 2024-02-26 08:32:40 浏览: 60
在Flutter中,我们可以使用 `http` 或 `dio` 等库来上传表单数据。下面是使用 `dio` 进行表单数据上传的示例代码:
```dart
import 'dart:io';
import 'package:dio/dio.dart';
void uploadFormData() async {
// 创建 Dio 实例
Dio dio = Dio();
// 创建 FormData 对象
FormData formData = FormData.fromMap({
'username': 'john',
'password': '123456',
'avatar': await MultipartFile.fromFile('/sdcard/avatar.jpg', filename: 'avatar.jpg'),
});
// 发送请求
try {
Response response = await dio.post('http://example.com/api/user', data: formData);
print(response.data);
} catch (e) {
print(e);
}
}
```
上面的代码中,我们使用 `dio` 库创建了一个 `Dio` 实例,然后创建了一个 `FormData` 对象,并通过 `MultipartFile.fromFile()` 方法将文件转换成 `MultipartFile` 对象。最后,我们使用 `Dio` 实例的 `post()` 方法将表单数据上传到服务器。
如果你使用的是 `http` 库,也可以使用 `MultipartRequest` 类来构建表单数据:
```dart
import 'dart:io';
import 'package:http/http.dart' as http;
void uploadFormData() async {
// 创建 MultipartRequest 对象
var request = http.MultipartRequest('POST', Uri.parse('http://example.com/api/user'));
// 添加表单字段
request.fields['username'] = 'john';
request.fields['password'] = '123456';
// 添加文件字段
var file = await http.MultipartFile.fromPath('avatar', '/sdcard/avatar.jpg');
request.files.add(file);
// 发送请求
var response = await request.send();
var responseBody = await response.stream.bytesToString();
print(responseBody);
}
```
上面的代码中,我们使用 `http` 库创建了一个 `MultipartRequest` 对象,并通过 `fields` 和 `files` 属性添加了表单字段和文件字段。最后,我们使用 `send()` 方法发送请求。
阅读全文