我正在编写一个将图像上传到服务器的应用程序,我不希望仅显示微调框,而是希望能够获得该上传状态的进度。
此外,我想这样做而不使用Multipart表单数据。这是我当前正在使用的代码-但它似乎因管道中断而停滞了,对于是否将数据发送到服务器,我的反馈为零:
Future<String> _uploadFile(File assetFile) async {
final url = <removed>;
final stream = await assetFile.openRead();
int length = assetFile.lengthSync();
final client = new HttpClient();
final request = await client.postUrl(Uri.parse(url));
request.headers.add(HttpHeaders.CONTENT_TYPE, "application/octet-stream");
request.contentLength = length;
await request.addStream(stream);
final response = await request.close();
// response prociessing.
}
Run Code Online (Sandbox Code Playgroud)
是否可以将大数据作为流发送而无需将其读入内存,并且可以使用当前的dart / flutter API在上传中取得进展吗?
我想通过这样的非multipart/form-data
请求上传文件:
POST http://127.0.0.1/upload
Cache-Control: no-cache
< /path/to/file/in/disk
Run Code Online (Sandbox Code Playgroud)
(我测试并成功将文件从 JetBrain Rider 的 REST 客户端上传到我的 REST 端点。)
包中有一个StreamedRequest
类,http
但我没有找到任何构造函数或设置器来将字节流或文件内容插入其中。
如何使用StreamedRequest
Dart 上传文件?