Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTTP使用dart发布python文件_Python_Http_Curl_Dart_Post - Fatal编程技术网

HTTP使用dart发布python文件

HTTP使用dart发布python文件,python,http,curl,dart,post,Python,Http,Curl,Dart,Post,我想在dart中通过http post发送一个python文件。我可以用以下方法来做: curl -X POST -F 'file=@/home/user/file.py' http://192.168.80.1:9888/dir/file.py 我也可以用python这样做: import requests url = 'http://192.168.80.1:9888/dir/file.py' files = {'file': open('file.py', 'rb')} print(f

我想在dart中通过http post发送一个python文件。我可以用以下方法来做:

curl -X POST -F 'file=@/home/user/file.py' http://192.168.80.1:9888/dir/file.py
我也可以用python这样做:

import requests

url = 'http://192.168.80.1:9888/dir/file.py'
files = {'file': open('file.py', 'rb')}
print(files)
r = requests.post(url, files=files)
但在dart,我无法发送邮件。我已经尝试了几种方法,但目前正在进行:

import 'package:http/http.dart' as http;
import 'dart:io';

void main(List<String> arguments) async {
  var response;
  var file;
  var url = 'http://192.168.80.1:9888/dir/file.py';
  file = File('file.py').readAsStringSync();
  var files = {'file': file};
  response = await http.post(url, body: files);
}

我知道服务器是通过CURL和python工作的。如何使用dart模拟CURL/python中的功能?

我能够通过POST使用dart发送python文件

import'包:dio/dio.dart'作为dio;
Future FormData3()异步{
返回dio.FormData.fromMap({
“文件”:等待dio.MultipartFile.fromFile(
“files/file.py”,
文件名:“file.py”,
),
});
}
Future sendFile()异步{
反应;
response=wait dio.dio().post('http://192.168.80.1:9888/dir/file.py',
数据:等待FormData2(),onSendProgress:(已接收,总计){
如果(总计!=-1){
打印((已接收/总计*100).ToStringGasFixed(0)+'%');
}
},
选项:dio。选项(
方法:“POST”,
responseType:dio.responseType.plain,
));
返回响应;
}
void main()异步{
response=wait sendFile();
}

似乎回答了这个问题。我只是在运行dart,而不是上面的问题所涉及的颤振。
ClientException (Connection closed before full header was received)
import 'package:dio/dio.dart' as dio;

Future<dio.FormData> FormData3() async {
  return dio.FormData.fromMap({
    'file': await dio.MultipartFile.fromFile(
      'files/file.py',
      filename: 'file.py',
    ),
  });
}

Future<dio.Response> sendFile() async {
  dio.Response response;

  response = await dio.Dio().post('http://192.168.80.1:9888/dir/file.py',
      data: await FormData2(), onSendProgress: (received, total) {
    if (total != -1) {
      print((received / total * 100).toStringAsFixed(0) + '%');
    }
  },
      options: dio.Options(
        method: 'POST',
        responseType: dio.ResponseType.plain,
      ));
  return response;
}

void main() async {
  response = await sendFile();
}