刚学习flutter时间不长,在flutter进行真机调试时,有一个上传文件的功能出了问题,请各位帮我看看指导一下,上传文件的代码如下:
Future<String> fileUplod1(String filePath,String fileName) async{
print('fileUpload1执行...');
BaseRequest baseRequest = new BaseRequest(static_string.upload, method: "post");
var userData=initSP.preferences.get("userData");
var userDataJson=json.decode(userData);
baseRequest.addHeader("user_name", userDataJson["username"]);
Map<String ,dynamic> map = Map();
String path1=filePath+fileName;//path1的值为:'Pictures/Screenshots/Screenshot_20220317_011833.jpg',这个值就是图片在手机上的路径
//String path1="/storage/emulated/0/DCIM/Camera/JPEG_20220309_165521_359598180.jpg"; 这是模拟器上的图片路径,上传是正常的
map["user_name"]=userDataJson["username"];
map["multipartFile"] = await MultipartFile.fromFile(path1);
FormData formData = FormData.fromMap(map);
baseRequest.setFormData(formData);
var result = await HiNet.getInstance().fire(baseRequest);
// print(result);
return result["data"];
}
执行方法后flutter报错如下:提示没有找到这个文件,但是这个文件的路径是正确的
I/flutter (18149): fileUpload1执行...
E/flutter (18149): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: FileSystemException: Cannot retrieve length of file, path = 'Pictures/Screenshots/Screenshot_20220317_011833.jpg' (OS Error: No such file or directory, errno = 2)
E/flutter (18149): #0 _File.length.<anonymous closure> (dart:io/file_impl.dart:366:9)
E/flutter (18149): #1 _rootRunUnary (dart:async/zone.dart:1434:47)
E/flutter (18149): #2 _CustomZone.runUnary (dart:async/zone.dart:1335:19)
E/flutter (18149): <asynchronous suspension>
E/flutter (18149): #3 multipartFileFromPath (package:dio/src/multipart_file_io.dart:15:16)
E/flutter (18149): <asynchronous suspension>
E/flutter (18149): #4 fileUplod1 (package:wx_flutter/sys/http/my_request.dart:84:28)
其它一些细节如下:
1 手机是荣耀50
2 AndroidManifest.xml中的权限如下:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
```xml
我大概已经解决了这个问题,我获得的这个path,也就是Pictures/Screenshots/Screenshot_20220317_011833.jpg是个相对路径,断点打出来实际还有个绝对路径/storage/emulated/0/Pictures/WeiXin/wx_camera_1648091579156.jpg,只不过这个路径先要获取future,通过file类型才能有绝对路径path属性.但今天太晚了还没有测试.
OS错误:没有这样的文件或目录
path = 'Pictures/Screenshots/Screenshot_20220317_011833.jpg'
目录不完整,定位不到文件。
fileUplod1(String filePath,String fileName)
String filePath //这个参数有问题。需要完整目录