问题描述
我正在尝试将屏幕截图文件发送到服务器。我尝试使用multipart请求,但是我得到的只是所陈述的错误,我不明白为什么它无法检索文件的长度。
这是我的代码:
unikId = '01-$ idcompny- $ times- $ id';
RenderRepaintBoundary boundary2 =
screen.currentContext.findRenderObject();
ui.Image image2 = await boundary2.toImage();
ByteData byteData2 =
await image2.toByteData(format: ui.ImageByteFormat.png);
final bytes = byteData2.buffer.asUint8List();
bool res = await _imageSaver.saveImage(
imageBytes: bytes,directoryName: "hourmeter",imageName: unikId,);
File lokasiGambar = new File('$unikId.png');
var stream =
// ignore: deprecated_member_use
new http.ByteStream(DelegatingStream.typed(lokasiGambar.openRead()));
var length = await lokasiGambar.length();
var uri =
Uri.parse("http://103.30.247.115:80/Flutter_PHP/upload_gambar.PHP");
var request = new http.MultipartRequest("POST",uri);
var multipartfile = new http.multipartfile("image",stream,length,filename: basename(lokasiGambar.path));
request.fields['idcom'] = idcompny;
request.files.add(multipartfile);
var response = await request.send();
if (response.statusCode == 200) {
show('Image Has Been Saved');
} else {
show('Failed To Save!');
}
} on SocketException catch (_) {
show('Image has been saved and pending to server');
if (_signal == 'not connected') {
var unikId;
var times = DateTime.Now().millisecondsSinceEpoch;
var rng = new Random();
var id;
for (var i = 0; i < 10; i++) {
id = rng.nextInt(1000);
}
unikId = '02-$idcompny-$times-$id';
RenderRepaintBoundary boundary2 =
screen.currentContext.findRenderObject();
ui.Image image2 = await boundary2.toImage();
ByteData byteData2 =
await image2.toByteData(format: ui.ImageByteFormat.png);
final bytes = byteData2.buffer.asUint8List();
bool res = await _imageSaver.saveImage(
imageBytes: bytes,directoryName: "TempImg",);
}
}
这是屏幕拍摄错误-
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)