Flutter/Dart SocketException 上传视频文件到 URL
Flutter/Dart SocketException Uploading Video File to URL
我在尝试将视频文件上传到指定 URL:
时收到此错误消息
DioError (DioError [DioErrorType.DEFAULT]: SocketException: OS Error: Connection reset by peer, errno = 54, address = storage.googleapis.com, port = 64995)
注意:这是一个 DioError
,因为我正在使用 dio
Dart/Flutter 包:https://pub.dev/packages/dio 我收到错误消息,使用等效 API 例如 http
库。
上传从存储中选择的视频文件的代码:
//File videoFile...
FormData data = FormData.fromMap({
"videoFile": await MultipartFile.fromFile(videoFile.path),
});
Response response = await Dio().post(
directUpload.url,
data: data,
onSendProgress: (int sent, int total) {
print("$sent $total");
},
);
URL (directUpload.url
) 是由 MUX API 生成并提供给他们的 Google 云存储。
https://storage.googleapis.com/video-storage-us-east1-uploads/...
调用post
时,上传了少量(如655524 / 17840042),然后出现错误。测试视频大小为 17.8 Mb。
运行 这在 iOS 设备或 iOS 模拟器上产生相同的 result/error.
我已尝试:flutter clean
、flutter upgrade
、删除 Podfile
和 pod repo update
、从设备中删除应用程序。都无济于事。
您尝试过使用http.MultipartRequest
方法吗?
由于它可用于传输大文件,如果 dio
中存在,您也可以尝试使用 DIO 替代方案
以及如何使用 http.MultipartRequest 这里有一篇文章 https://dev.to/carminezacc/advanced-flutter-networking-part-1-uploading-a-file-to-a-rest-api-from-flutter-using-a-multi-part-form-data-post-request-2ekm
让我知道它是否有效。
是的,我和 Dio 有同样的问题。
当前无法上传数据类型Uint8List
我的临时解决方案:
使用 http lib
http: ^0.12.1
import 'package:http/http.dart' as http;
Future uploadData(Uint8List imageData) async {
await http.put(preData.url, headers: getHeader(), body: imageData);
}
use:
List<int> imageData = File(filePath).readAsBytesSync();
await uploadData(imageData);
希望能帮到你
如果 Web 服务客户端正在等待来自远程 Web 服务提供商的 SOAP 响应并且连接过早关闭,则会出现错误消息“Connection reset by peer”。
此错误的最常见原因之一是中间的防火墙关闭了连接。在这种情况下,您可以增加连接超时 firewall.You 可以通过捕获和分析 IP 跟踪找到关闭连接的组件。
其他可能的原因例如:
服务器端的资源限制,如内存不足服务器
进程终止
由于高流量导致服务器过载
也试试这个..
cd ~/flutter
git checkout -b max-in-flight
code packages/flutter_tools/lib/src/devfs.dart # edit kMaxInFlight from 6 to 1
rm bin/cache/flutter_tools*
还有这个
flutter clean
flutter channel stable
从 POST 更改为 PUT 请求可解决问题。
调用post时,上传了少量(如655524 / 17840042),然后出现错误。测试视频大小为 17.8 Mb。
回答-
转到您的 cpanel MultiPHP INI 编辑器文件并增加 post_max_size
无需更改您的 flutter 代码,这是正确的。
我在尝试将视频文件上传到指定 URL:
时收到此错误消息DioError (DioError [DioErrorType.DEFAULT]: SocketException: OS Error: Connection reset by peer, errno = 54, address = storage.googleapis.com, port = 64995)
注意:这是一个 DioError
,因为我正在使用 dio
Dart/Flutter 包:https://pub.dev/packages/dio 我收到错误消息,使用等效 API 例如 http
库。
上传从存储中选择的视频文件的代码:
//File videoFile...
FormData data = FormData.fromMap({
"videoFile": await MultipartFile.fromFile(videoFile.path),
});
Response response = await Dio().post(
directUpload.url,
data: data,
onSendProgress: (int sent, int total) {
print("$sent $total");
},
);
URL (directUpload.url
) 是由 MUX API 生成并提供给他们的 Google 云存储。
https://storage.googleapis.com/video-storage-us-east1-uploads/...
调用post
时,上传了少量(如655524 / 17840042),然后出现错误。测试视频大小为 17.8 Mb。
运行 这在 iOS 设备或 iOS 模拟器上产生相同的 result/error.
我已尝试:flutter clean
、flutter upgrade
、删除 Podfile
和 pod repo update
、从设备中删除应用程序。都无济于事。
您尝试过使用http.MultipartRequest
方法吗?
由于它可用于传输大文件,如果 dio
中存在,您也可以尝试使用 DIO 替代方案
以及如何使用 http.MultipartRequest 这里有一篇文章 https://dev.to/carminezacc/advanced-flutter-networking-part-1-uploading-a-file-to-a-rest-api-from-flutter-using-a-multi-part-form-data-post-request-2ekm
让我知道它是否有效。
是的,我和 Dio 有同样的问题。
当前无法上传数据类型Uint8List
我的临时解决方案:
使用 http lib
http: ^0.12.1
import 'package:http/http.dart' as http;
Future uploadData(Uint8List imageData) async {
await http.put(preData.url, headers: getHeader(), body: imageData);
}
use:
List<int> imageData = File(filePath).readAsBytesSync();
await uploadData(imageData);
希望能帮到你
如果 Web 服务客户端正在等待来自远程 Web 服务提供商的 SOAP 响应并且连接过早关闭,则会出现错误消息“Connection reset by peer”。
此错误的最常见原因之一是中间的防火墙关闭了连接。在这种情况下,您可以增加连接超时 firewall.You 可以通过捕获和分析 IP 跟踪找到关闭连接的组件。
其他可能的原因例如:
服务器端的资源限制,如内存不足服务器
进程终止
由于高流量导致服务器过载
也试试这个..
cd ~/flutter
git checkout -b max-in-flight
code packages/flutter_tools/lib/src/devfs.dart # edit kMaxInFlight from 6 to 1
rm bin/cache/flutter_tools*
还有这个
flutter clean
flutter channel stable
从 POST 更改为 PUT 请求可解决问题。
调用post时,上传了少量(如655524 / 17840042),然后出现错误。测试视频大小为 17.8 Mb。
回答-
转到您的 cpanel MultiPHP INI 编辑器文件并增加 post_max_size
无需更改您的 flutter 代码,这是正确的。