Flutter:从网络下载文件或从目录复制

问题描述

我正在尝试从Firebase下载文件并将文件从temp目录复制到下载目录。 每件事都可以在模拟器上正常运行,但不能在真实设备上运行。 我做错了。

从目录中复制文件:-

     Future<void> downloadFile() async {
        final Directory extDir = await getApplicationDocumentsDirectory();
        final String dirPath = '/storage/emulated/0/Download/';
        await Directory(dirPath).create(recursive: true);
        String timestamp() => 
        DateTime.now().millisecondsSinceEpoch.toString();
        final File file = widget.videoFile;
        bgFile = await file
            .copy('/storage/emulated/0/Download/${timestamp()}.mp4');
    
      }

从Firebase下载

      "Future<void> downloadFile() async {
    _loadingStreamCtrl.sink.add(true);
    final Random random = Random();
    var randid = random.nextInt(10000);
    Dio dio = Dio();
    final String dirPath = '/storage/emulated/0/Download/';
    await Directory(dirPath).create(recursive: true);

    FileUtils.mkdir([dirPath]);
    await dio.download(
      mediaUrl,dirPath + randid.toString() + ".mp4",);

    _loadingStreamCtrl.sink.add(false);
  }"

错误日志:

D/ColorViewRootUtil(28225): nav gesture mode swipeFromBottom ignore false downY 204 mScreenHeight 2340 mScreenWidth 1080 mStatusBarHeight 54 globalScale 1.125 nav mode 3 event MotionEvent { action=ACTION_DOWN,actionButton=0,id[0]=0,x[0]=777.0,y[0]=204.0,toolType[0]=TOOL_TYPE_FINGER,buttonState=0,classification=NONE,metaState=0,flags=0x0,edgeFlags=0x0,pointerCount=1,historySize=0,eventTime=22468101,downTime=22468101,deviceId=5,source=0x1002,displayId=0 } rotation 0
D/WindowManager(28225): Add to mViews: android.widget.FrameLayout{2fd087b V.E...... ......I. 0,0-0,0},this = android.view.WindowManagerGlobal@febfae2,pkg= com.leymonlabs.jhoom
E/flutter (28225): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: FileSystemException: Creation failed,path = '/storage/emulated/0/Download' (OS Error: Permission denied,errno = 13)
E/flutter (28225): #0      _Directory.create.<anonymous closure> (dart:io/directory_impl.dart:124:11)
E/flutter (28225): #1      _rootRunUnary (dart:async/zone.dart:1192:38)
E/flutter (28225): #2      _CustomZone.runUnary (dart:async/zone.dart:1085:19)
E/flutter (28225): #3      _FutureListener.handleValue (dart:async/future_impl.dart:141:18)
E/flutter (28225): #4      Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
E/flutter (28225): #5      Future._propagateToListeners (dart:async/future_impl.dart:711:32)
E/flutter (28225): #6      Future._completeWithValue (dart:async/future_impl.dart:526:5)
E/flutter (28225): #7      Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:556:7)
E/flutter (28225): #8      _rootRun (dart:async/zone.dart:1184:13)
E/flutter (28225): #9      _CustomZone.run (dart:async/zone.dart:1077:19)
E/flutter (28225): #10     _CustomZone.runGuarded (dart:async/zone.dart:979:7)
E/flutter (28225): #11     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1019:23)
E/flutter (28225): #12     _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
E/flutter (28225): #13     _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)

权限:-

uses-permission android:name =“ android.permission.INTERNET” 使用许可 android:name =“ android.permission.READ_EXTERNAL_STORAGE” 使用许可 android:name =“ android.permission.WRITE_EXTERNAL_STORAGE” 使用许可 android:name =“ android.permission.ACCESS_FINE_LOCATION”

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...