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

12
我一直在使用以下代码将文件上传到我的服务器,它可以完成工作,但我想监控上传进度百分比,并更新用户界面以反映进度。
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.
  }

注意,在监听器中的value参数将获取来自服务器端WebAPI的最终返回值。如何实现呢?

1个回答

17
请查看在GitHub上的示例。它演示了如何访问文件的当前上传进度。

工作正常。非常感谢。 - Khaled Ahmed
1
不起作用了。我猜有些方法已经过时了,比如request.addStream和request.close..你有其他的替代方法吗? - Hadi Khan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接