Flutter 使用 http 包监控文件上传进度

Kha*_*med 5 file-upload http file progress flutter

我一直在使用以下代码在我的服务器上上传文件,因为它正在执行这项工作,但我想在操作期间监控上传进度百分比并相应地更新 UI 以向用户反映进度

uploadFile({File imageFile, String refCode}) async {
    // open a bytestream
    var stream =
        new http.ByteStream(DelegatingStream.typed(imageFile.openRead()));
    // get file length
    var length = await imageFile.length();

    // string to uri
    var uri = Uri.parse(
        'http://-------------/api/FilesUploadB/?refCode=$refCode');

    // create multipart request
    var request = new http.MultipartRequest("POST", uri);

    // multipart that takes file
    var multipartFile = new http.MultipartFile('file', stream, length,
        filename: basename(imageFile.path));

    // add file to multipart
    request.files.add(multipartFile);

    // send
    var response = await request.send();

    // listen for response
    response.stream.transform(utf8.decoder).listen((value) {
      print(value);
    });

    //return response.
  }
Run Code Online (Sandbox Code Playgroud)

请注意,value侦听中的 正在让我从服务器上的 WebAPI 获得最终回报。如何做到这一点?

小智 7

看看GitHub上的这个例子。它演示了如何访问文件的当前上传进度。