我使用 Dio 框架将图像上传到Flutter应用程序中的服务器。 Dio版本3.0.9。 发布方法。 添加了4个标题 使用图像和其他字段创建表单数据。
我分析了更多的方法。就像将Dio降级为 2.3.1 一样,可以使用 UploadFileInfo 方法。没有成功。然后使用 multipartfileupload 。最后一个。
Future<bool> createStoreWithDio() async {
Map<String, String> headers = {
"Accept": "application/json",
"authorization": tokenString,
"authtype": "admin",
"Content-Type": "multipart/form-data"
};
try {
FormData formData = new FormData.fromMap({
"logo": await http.MultipartFile.fromPath("logo", imageFile.path,
contentType: new MediaType('image', 'png')),
"name": " Bala ios",
"description": "_description",
"website": "www.website.com",
"password": "Test password",
"user_name": "Test userInformationName",
"mobile": "9988776655",
"email": "test@techit.io",
});
print(formData.fields);
Response response = await dio
.post(
"API",
data: formData,
options: Options(
headers: headers,
),
)
.then((value) {
print(value.toString());
});
print(response.toString());
} catch (error) {
print(error);
}
}
imageFile 是我从相机/图库中捕获的文件。
我得到 500 例外。任何帮助都会有帮助
答案 0 :(得分:1)
我不确定是什么原因造成的,此代码是否在我根据您的代码进行了更改的应用程序中使用,但是我没有发送任何标头,因此您需要添加然后尝试使用此代码,让我知道它适用您。还要确保您拥有文件imageFile.path
,并且您的api网址正确无误
确保已导入
`'import package:http_parser/http_parser.dart';
import 'package:mime/mime.dart';`
Dio dio = new Dio();
final mimeTypeData =
lookupMimeType(imageFile.path, headerBytes: [0xFF, 0xD8]).split('/');
FormData formData = FormData.fromMap({
"name": " Bala ios",
"description": "_description",
"website": "www.website.com",
"password": "Test password",
"user_name": "Test userInformationName",
"mobile": "9988776655",
"email": "test@techit.io",
"logo": await MultipartFile.fromFile(imageFile.path,
contentType: MediaType(mimeTypeData[0], mimeTypeData[1])),
});
var response = await dio.post(
Urls.ImageInsert,
data: formData,
);
var message = response.data['message'];