在 flutter 中下载文件

标签 download flutter

我做了一个 flutter 应用程序,首先我显示有关pdf文件的所有信息,它包括文件的url,来自Restfull API,一切正常,但我想在用户点击它时下载这个文件,我试试这个:

 onTap: () async {
                                // downloadFile(snapshot.data[index].file);
                                Dio dio = new Dio();
                                Directory dir =
                                    await getApplicationDocumentsDirectory();
                                String path = dir.path;
                                await dio.download(
                                    snapshot.data[index].file, path);
                              },

snapshot.data[index].file,path 是正确的路径或来自 api 的文件,但它不起作用,并在此代码中给我一个 (path) 错误

await getApplicationDocumentsDirectory();
String path = dir.path;

this is my error log:

E/flutter (26482): [ERROR:flutter/shell/common/shell.cc(188)] Dart Error: Unhandled exception:
E/flutter (26482): FileSystemException: Cannot open file, path = '/data/data/com.example.mis/app_flutter' (OS Error: Is a
directory, errno = 21)
E/flutter (26482): #0      _File.throwIfError (dart:io/file_impl.dart:647:7)
E/flutter (26482): #1      _File.openSync (dart:io/file_impl.dart:491:5)
E/flutter (26482): #2      Dio.download (package:dio/src/dio.dart:212:20)
E/flutter (26482): <asynchronous suspension>
E/flutter (26482): #3      MaterialsState.build.<anonymous closure>.<anonymous closure>.<anonymous closure>
(package:mis/courses/materials.dart:121:47)
E/flutter (26482): <asynchronous suspension>
E/flutter (26482): #4      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14)
E/flutter (26482): #5      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:562:30)
E/flutter (26482): #6      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
E/flutter (26482): #7      TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9)
E/flutter (26482): #8      TapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:204:7)
E/flutter (26482): #9      GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
E/flutter (26482): #10     _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent
(package:flutter/src/gestures/binding.dart:184:20)
E/flutter (26482): #11     _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent
(package:flutter/src/gestures/binding.dart:158:22)
E/flutter (26482): #12     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent
(package:flutter/src/gestures/binding.dart:138:7)
E/flutter (26482): #13     _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue
(package:flutter/src/gestures/binding.dart:101:7)
E/flutter (26482): #14     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket
(package:flutter/src/gestures/binding.dart:85:7)
E/flutter (26482): #15     _invoke1 (dart:ui/hooks.dart:159:13)
E/flutter (26482): #16     _dispatchPointerDataPacket (dart:ui/hooks.dart:113:5)

还有其他下载文件的方法吗?甚至只是打开它?非常感谢

最佳答案

以防万一其他人需要这个。
问题是您没有将文件路径作为参数传递,而是传递了一个目录。

await dio.download(snapshot.data[index].file, path+'/fileName.pdf');  

这应该可以解决问题。

关于在 flutter 中下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53580719/

相关文章:

flutter - 有没有什么可能的方法可以像在 flutter 朔迷离的Pageview中的Instagram故事一样,在右侧添加一个水龙头以前进,而在左侧单击一个水龙头来后退?

python - 使用 Python urllib2/requests 验证 Google Drive 并下载电子表格

r - download.file() 在 Windows 上生成 "invalid"zip 文件,但在 Mac 上工作正常

Flutter:在运行时将 String 转换为类字段名称

flutter - 耀斑没有动画

flutter - 如何在 TextButton 上设置最小宽度(不更改最小高度)

Flutter:创建主题的工具

c# - C#中如何从网站下载文件

python-2.7 - 如何在 Chrome 中使用 Selenium + Python 绑定(bind)控制文件的下载

java - 如何在play框架作业中下载图像?