【问题标题】:cannot open and read a file, picked by file_picker, in Flutter desktop on MacOS无法在 MacOS 上的 Flutter 桌面中打开和读取由 file_picker 选择的文件
【发布时间】:2022-11-02 06:46:37
【问题描述】:

我正在尝试打开一个文件,但我总是收到错误 1。 我正在使用macos,并为macos开发。 关于如何在不出错的情况下打开 fil 的任何帮助?

我试过这个:

void getAPI() {
  var url = "https://controller.test.io/v1/";
  SecurityContext context = SecurityContext();
  context.setTrustedCertificates("/Users/me/keys/crtfile");
  context.usePrivateKey("/Users/me/keys/keyfile");
  HttpClient client = new HttpClient(context: context);
  client.getUrl(Uri.parse(url))
      .then((HttpClientRequest request) => request.close())
      .then((HttpClientResponse response) {
    response.transform(utf8.decoder).listen((contents) {
      print(contents);
    });
  });
}

但我明白了:

Cannot open file, path = '/Users/me/keys/crtfile' (OS Error: Operation not permitted, errno = 1)

【问题讨论】:

  • 您是否在 Manifest 文件中授予读写权限?
  • @Vaidarbhi 我已添加到 DebugProfile.entitlements <key>com.apple.security.files.user-selected.read-write</key> <true/> 这就是我不需要的全部?

标签: flutter dart


【解决方案1】:
  1. 如果你使用AppSandbox(com.apple.security.app-sandbox在entitlements文件中设置为true),那么你还需要添加:
    <key>com.apple.security.files.user-selected.read-write</key>
    <true/>
    

    或者您可以改为删除 AppSandbox 支持以“放松”权利检查(将 com.apple.security.app-sandbox 设置为 false,或完全删除属性)

    1. 您的路径看起来像 Linux 风格的路径 ("/Users/me/keys/keyfile"),但如果您检查 FilePicker 路径,它们看起来会有所不同:
    import 'package:file_picker/file_picker.dart';
    
    FilePickerResult? result = await FilePicker.platform.pickFiles();
    print(result?.files.first.path);    // /Volumes/Macintosh HD/Users/username/file.png
    

    因此,请尝试检查您的路径是否正确。

【讨论】:

    猜你喜欢
    • 2022-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-05
    • 1970-01-01
    • 2021-12-15
    • 2020-10-27
    • 2022-07-07
    相关资源
    最近更新 更多