Flutter 使用http库进行文件上传

一、前言

实际开发中,我们会用到文件上传功能,这里通过简单的代码演示,达到实际开发中快速使用的目的

二、代码演示

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值