我需要使用http包将带有标头,正文和令牌的图像上传到服务器。
http.MultipartRequest imageUploadRequest = http.MultipartRequest('POST', Uri.parse(BASE_URL));
imageUploadRequest.headers["Authorization"] = "bearer ${token}";
imageUploadRequest.fields['FileName'] = "Test";
final file = await http.MultipartFile.fromPath('file', image.path);
imageUploadRequest.files.add(file);
final streamedResponse = await imageUploadRequest.send();
print("streamedResponse.statusCode : ${streamedResponse.statusCode}");
// Log-> streamedResponse.statusCode : 307
print("streamedResponse.headers : ${streamedResponse.headers}");
// Log-> streamedResponse.headers : streamedResponse.headers : {x-powered-by: ASP.NET, location: https://api.test.me/image, date: Sat, 23 Nov 2019 05:01:48 GMT, transfer-encoding: chunked, server: Microsoft-IIS/10.0}
final MapString, dynamic responseData = json.decode(response.body);
print("statusCode : ${response.statusCode}");
// Log-> statusCode : 307
print("headers : ${response.headers}");
// Log-> headers : streamedResponse.headers : {x-powered-by: ASP.NET, location: https://api.test.me/image, date: Sat, 23 Nov 2019 05:01:48 GMT, transfer-encoding: chunked, server: Microsoft-IIS/10.0}
但是,我收到以下错误“错误:FormatException:输入的意外结束(在字符1)”,状态码为307。
谁能告诉我这是什么问题吗?
我的标题与我传递的字段不匹配!!
此代码在我的另一个具有分段文件上传功能的应用程序中正常工作。
谢谢。
HTTP状态307是重定向,因此服务器告诉您使用在响应的位置标头(即https://api.test.me/image
)中提供的不同URL再次尝试该请求。您要么需要重试该请求,要么将初始请求发送到正确的端点,以便服务器不发送重定向。