一、前言
实际开发中,我们会用到文件上传功能,这里通过简单的代码演示,达到实际开发中快速使用的目的
二、代码演示
import 'package:http/http.dart';
_uploadFile(String filePath) async{
String url = "http://39.106.158.176:9010/user/upload_headpic?uid=725304943665217536&token=1";
print("YM------->上传的路径:$url");
var uri = Uri.parse(url);
var request = new MultipartRequest("POST",uri);
var multipartFile = await MultipartFile.fromPath("headpic",filePath);
request.files.add(multipartFile);
StreamedResponse response = await request.send();
//这里返回值用到了Stream回调
// response.stream.transform(utf8.decoder).listen((value){
// print("上传文件的结果:$value");
// });
//如果需要对获取的值进行处理可以采取这种方式
// await for(String value in response.stream.transform(utf8.decoder)) {
// // return value;
// value += "+++";
// }
//如果只需要一个值的话,可以使用这种方式
// String result = await response.stream.transform(utf8.decoder).first;
}
三、源码示例
其实在源码里面有演示代码,对文件上传有更详细的演示,具体代码在MultipartRequest
类里面。这里搬运一下,代码如下:
/// A `multipart/form-data` request.
///
/// Such a request has both string [fields], which function as normal form
/// fields, and (potentially streamed) binary [files].
///
/// This request automatically sets the Content-Type header to
/// `multipart/form-data`. This value will override any value set by the user.
///
/// var uri = Uri.parse('https://example.com/create');
/// var request = http.MultipartRequest('POST', uri)
/// ..fields['user'] = 'nweiz@google.com'
/// ..files.add(await http.MultipartFile.fromPath(
/// 'package', 'build/package.tar.gz',
/// contentType: MediaType('application', 'x-tar')));
/// var response = await request.send();
/// if (response.statusCode == 200) print('Uploaded!');
四、参考代码
在Flutter中使用POST请求上传文件(在Flutter中使用POST请求上传文件)https://www.it1352.com/2087171.html
更多的网络请求示例 https://blog.csdn.net/Mr_Tony/article/details/113539756