Flutter Dio 多文件上傳失敗,服務(wù)收不到文件。

原因是兩種不同for循環(huán)導(dǎo)致的。
在Flutter 為了方便大部分都會(huì)使用forEach或者map的,結(jié)果就是這種方式導(dǎo)致沒(méi)有拿到文件。

服務(wù)端獲取不到文件寫(xiě)法

      view?.showLoadingProgress();
      //就是使用map導(dǎo)致的
      List<Future<MultipartFile>> files = paths.map((path) async {
        String filename = path.substring(path.lastIndexOf("/") + 1);
        return await MultipartFile.fromFile(path, filename: filename);
      }).toList();
      FormData formData = new FormData.fromMap({"file": files});
      DioHolder().call(
        MainApiConstant.UPLOAD,
        method: DioHolder.POST,
        data: formData,
        onSuccess: (map) {
          view?.onSubmitSuccess();
          view?.dismissLoadingProgress();
        },
        onError: (NetError e) {
          view!.onToast(e);
          view?.dismissLoadingProgress();
        },
      );
    });

修改后寫(xiě)法(解決)

      view?.showLoadingProgress();
      List<MultipartFile> files = [];
      for (var file in imageFiles) {
        String filename = file.path.substring(file.path.lastIndexOf("/") + 1);
        var suffix = filename.substring(filename.lastIndexOf(".") + 1);
        MultipartFile multipartFile = await MultipartFile.fromFile(
          file.path,
          filename: "filename.$suffix",
          contentType: MediaType.parse("image/$suffix"),
        );
        files.add(multipartFile);
      }
      FormData formData = FormData.fromMap({"files": files});
      DioHolder().call(
        MainApiConstant.UPLOAD,
        method: DioHolder.POST,
        data: formData,
        options: Options(
          contentType: "multipart/form-data",
        ),
        onSuccess: (map) {
          view?.onSubmitSuccess();
          view?.dismissLoadingProgress();
        },
        onError: (NetError e) {
          view!.onToast(e);
          view?.dismissLoadingProgress();
        },
      );
    });
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容