web-dev-qa-db-ja.com

Flutter Webにアップロードされたファイルのパスを取得する

私が直面している主な問題はこれです(Webプラットフォーム上)。

私はAndroidとFlutterでWebプラットフォーム)のためのアプリを開発しています。ファイルをアップロードすること(QRコードの画像)がQR_CODE_TOOLSプラグインを使用する必要があります。このようなファイルパス

resultDecodeStr = await QrCodeToolsPlugin.decodeFrom(path);
 _

これにより、イメージファイルをアップロードする方法(Webプラットフォーム上):

Future<File> pickFile() async {
   final Map<String, dynamic> data = {};
   final FileUploadInputElement input = FileUploadInputElement();
   input..accept = 'image/*';
   input.click();
   await input.onChange.first;
   if (input.files.isEmpty) return null;
   return input.files[0];
}
 _

返されたファイルオブジェクトには、空のプロパティ "recondialpath"があります。

On Android私は似ていますが、パスがありますが、そうでない場合は、tempディレクトリ(path_providerを使って)を取得し、新しいファイルを作成することができます(dart.io) 。しかし、これはWebでは不可能です。両方のプラグイン(PATH_PROVIDERとDART IO)に互換性がない...

私はいくつかの助けに感謝してください...

9
René Lazo

あなたが提供した図書館を使って、あなたが望むものをすることが可能であるようには見えません。 Webへのファイルのアップロードは、DART:IOファイルとは異なる制限/プロパティを持つDART:HTMLファイルのコピーを取得するため、デバイスとは異なります。そのライブラリを見て、Bytesからのデコードをサポートしているようには見えません(パスからのみ)、ブラウザのセキュリティが機能する方法のためにできません(ファイルシステムにアクセスできない、 しかし、これが将来 にある可能性があります。ブラウザで機能するには、バイトからのデコードを許可する必要があります(Dart:HTMLファイルのバイトを読むことができるため)。関連項目: ローカルファイルのJavaScript

その結果、ライブラリをフォークする必要があり、あなた自身のバイトのデコーダを作るか、Webサポートのために別のライブラリを使用してください。

2
Gregory Conrad