我试图上传多个图像到服务器,但总是遇到问题。我也尝试了一些其他的解决方案,但没有奏效。
saveImages() async {
// string to uri
Uri uri = Uri.parse('http://100.0.50.10:8000/API/AddImageCarSale/Post');
// create multipart request
MultipartRequest request = http.MultipartRequest("POST", uri);
if (images != null) {
for (var i = 0; i < images.length; i++) {
ByteData byteData = await images[i].getByteData();
List<int> imageData = byteData.buffer.asUint8List();
MultipartFile multipartFile = MultipartFile.fromBytes(
'photo', //key of the api
imageData,
filename: images[i].name,
contentType: MediaType("image",
"jpg"), //this is not nessessory variable. if this getting error, erase the line.
);
request.fields['PhoneNo'] = '1122';
request.fields['VehicleNo'] = '1234';
// add file to multipart
request.files.add(multipartFile);
// send
var response = await request.send();
}
}
}我的错误是
错误:flutter/lib/ui/ui_dart_state.cc(166)未处理的异常:错误状态:无法完成最终的请求。E/ BaseRequest.finalize (11521):#0 BaseRequest.finalize(包装:http/src/base_request.dart:104:20)E/ MultipartRequest.finalize (11521):#1 MultipartRequest.finalize IOClient.send E/颤振(11521):#2 IOClient.send(包装:http/src/io_client.dart:28:26)E/MultipartRequest.finalize (11521):#3 BaseRequest.send (软件包:http/src/base_BaseRequest.send)(package:Autolog/pages/buySell/sellerForm.dart:361:38) E/request.dart:119:35 (11521):E/颤振(11521):#5 _SellerFormState._buildBody。(package:Autolog/pages/buySell/sellerForm.dart:754:25) E/颤振(11521):#6 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:992:19) E/颤振(11521):#7 _InkResponseState.build。(package:flutter/src/material/ink_well.dart:1098:38) E/颤振(11521):#8 (package:flutter/src/gestures/recognizer.dart:184:24) E/颤振(11521):#9 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:524:11) E/颤振(11521):#10 BaseTapGestureRecognizer._checkUp (包装:颤振/src/手势/踢踏舞:284:5)11521):#11 (package:flutter/src/gestures/arena.dart:158:27) (package:flutter/src/gestures/binding.dart:224:20) E/ GestureArenaManager.sweep (11521):#13 GestureBinding.handleEvent GestureBinding.dispatchEvent E/GestureBinding.handleEvent (11521):#14 GestureBinding.dispatchEvent(包装:GestureArenaManager.sweep/src/手势/binding.dart:GestureArenaManager.sweep/src/手势/binding.dart:E/颤振(11521):#15 (package:flutter/src/gestures/binding.dart:158:7) E/颤振(11521):#16 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:104:7) E/颤振(11521):#17 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:88:7) E/颤振(11521):#18 _rootRunUnary (飞镖:异步/飞镖:1206:13)E/颤振(11521):#19 _CustomZone.runUnary (飞镖:异步/飞镖:1100:19)E/颤振(11521):#20 _CustomZone.runUnaryGuarded (飞镖:异步/飞镖:1005:7)E/颤振(11521):#21 _invoke1 (飞镖:ui/hooks.dart:267:10)E/颤振(11521):#22 _dispatchPointerDataPacket (飞镖:ui/hooks.dart:176:5)E/颤振(11521):
发布于 2022-02-26 13:22:10
在完成多部分请求时,您需要为每个循环创建一个新的多部分请求。尝试这个修改,它应该可以工作。
// string to uri
Uri uri = Uri.parse('http://100.0.50.10:8000/API/AddImageCarSale/Post');
// create multipart request
if (images != null) {
for (var i = 0; i < images.length; i++) {
MultipartRequest request = http.MultipartRequest("POST", uri);
ByteData byteData = await images[i].getByteData();
List<int> imageData = byteData.buffer.asUint8List();
MultipartFile multipartFile = MultipartFile.fromBytes(
'photo', //key of the api
imageData,
filename: images[i].name,
contentType: MediaType("image",
"jpg"), //this is not nessessory variable. if this getting error, erase the line.
);
request.fields['PhoneNo'] = '1122';
request.fields['VehicleNo'] = '1234';
// add file to multipart
request.files.add(multipartFile);
// send
var response = await request.send();
}
}
}https://stackoverflow.com/questions/67469618
复制相似问题