无法使用Flutter在iOS平台中上传文档

时间:2019-08-14 13:21:22

标签: flutter dart

我正在尝试使用Dio和file_picker flutter框架将文档上传到我们的服务器。这在android平台上可以正常工作,但在iOS平台上不能正常工作。下面我提到了带有异常细节的代码。请指导我解决此问题。

Future<ProfileSuccess> postUserRegister(Map params, String subURL) async {

if (params['image'] != null && params['image'] != '') {
  String fileImageName = params['image'];
  fileImageName = fileImageName
      .split('/')
      .last;
  params['image'] = UploadFileInfo(File(params['image']), fileImageName);
}
else {
  params['image'] = '';
}
if (params['security_certificate'] != null &&
    params['security_certificate'] != '') {
  String fileSecrityName = params['security_certificate'];
  fileSecrityName = fileSecrityName
      .split('/')
      .last;
  params['security_certificate'] =
      UploadFileInfo(File(params['security_certificate']), fileSecrityName);
}
else {
  params['security_certificate'] = '';
}
if (params['upload_resume'] != null && params['upload_resume'] != '') {
  String fileResumeName = params['upload_resume'];
  fileResumeName = fileResumeName
      .split('/')
      .last;
  params['upload_resume'] =
      UploadFileInfo(File(params['upload_resume']), fileResumeName);
}
else {
  params['upload_resume'] = '';
}

try {
  FormData formData = FormData.from(params);
  Response response = await _dio
      .post(AppBaseURL.baseURL + 'user/$subURL',
      data: formData /*json.encode(params)*/,
      options:
      new Options(contentType: ContentType.parse(
          "application/x-www-form-urlencoded")));
  if (response.statusCode == 200 || response.statusCode == 201) {
    final Map parsed = response.data;
    return ProfileSuccess.fromJson(parsed);
  } else if (response.statusCode == 422) {
    return ProfileSuccess.withError("The email has already been taken");
  } else
    return ProfileSuccess.withError('Authentication Error');
}
on DioError catch (exception) {
  if (exception == null || exception.type == DioErrorType.DEFAULT) {
    return ProfileSuccess.withError(exception.message);
  }
  else if (exception.type == DioErrorType.RECEIVE_TIMEOUT ||
      exception.type == DioErrorType.CONNECT_TIMEOUT) {
    return ProfileSuccess.withError(
        "Couldn't connect, please ensure you have a stable network.");
  }
  else if (exception.response.statusCode == 422) {
    return ProfileSuccess.withError("The email has already been taken");
  }
  else {
    return ProfileSuccess.withError("Something went wrong");
  }
}}
  

FileSystemException:无法检索文件的长度”(操作系统错误:无此类文件或目录,errno = 2)

0 个答案:

没有答案