file - Dart Flutter Socket 是否可以通过套接字接收文件?
问题描述
Dart Flutter Socket 是否可以通过套接字接收文件?例如图片 jpeg
解决方案
bad, but it works, maybe someone needs to receive a file via a TCP socket, the only thing you need to know is the file size
Future<String> getImageFile(String request) async {
Socket socket;
final path = await _localPath;
BytesBuilder builder = new BytesBuilder(copy: false);
void doneHandlerDone(){
socket.close();
}
void dataHandler(data){
builder.add(data);
if (builder.length >= 1716980) { // file size
Uint8List dt = builder.takeBytes();
final filename = 'test1.jpg';
writeToFile(dt.buffer.asByteData(0, dt.buffer.lengthInBytes), '$path/$filename');
doneHandlerDone();
}
}
void errorHandler(error, StackTrace trace){
print(error);
}
Socket.connect(ip, port).then((Socket sock) {
socket = sock;
socket.listen(dataHandler, onError: errorHandler, onDone: doneHandlerDone, cancelOnError: false);
}).then((_) {
socket.write('$request\r\n');
}).catchError((Object e) {
print("Unable to connect: $e");
});
return null;
}
Future<void> writeToFile(ByteData data, String path) {
final buffer = data.buffer;
return new File(path).writeAsBytes(buffer.asUint8List(data.offsetInBytes, data.lengthInBytes));
}
推荐阅读
- c++ - C ++对元组向量进行排序
按数值,然后按字典顺序 - java - Spring Boot 不搜索 log4j2 配置文件
- tensorflow - 检查失败:CUDA_SUCCESS == cuCtxSetCurrent
- xamarin.forms - 通过我的应用程序以 xamarin 形式从图库中共享图像
- python - 在 Flask 中使用 passlib 的正确方法
- c# - 在也被移动的对象上使用 transform.forward?
- reactjs - 如何轮询列表中项目的更新?
- django - 创建会话但出现错误“确认表单提交”
- react-native - react-native NavigationOptions 标头未显示
- selenium-webdriver - Selenium Web 服务器状态元素引用错误