一、基础配置
1、android/app/src/main/AndroidManifest.xml
二、上传文件
1、安装包
file_picker | Dart Package
2、引用包
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:http_parser/http_parser.dart';
import 'package:file_picker/file_picker.dart';
//可配置多选文件,请参考官方文档
FilePickerResult? result = await FilePicker.platform.pickFiles();
if (result != null) {
final files = result.files[0];
///压缩文件
File file = await ImageCompressUtil.imageCompressAndGetFile(File(files.path!));
await uploadFile(file); //上传
} else {
//未选择任何文件
print('未选择文件');
}
///上传文件
dynamic uploadFile(dynamic pickedFile) async {
print('上传中...');
try {
//获取路径
String path = File(pickedFile.path).path;
//获取名称
String name = path.substring(path.lastIndexOf("/") + 1, path.length);
//获取后缀
String suffix = name.substring(name.lastIndexOf(".") + 1, name.length);
//装入FormData对象类
FormData formData = FormData.fromMap({
'image_type': suffix,
'file': await MultipartFile.fromFile(path,
filename: name, contentType: MediaType.parse("image/$suffix")),
});
//上传服务
final res = await Http().post('url',
data: formData,
options: Options(
contentType: 'multipart/form-data',
responseType: ResponseType.plain));
if (res!['code'] == 200) {
print('文件上传成功!');
} else {
print('文件上传失败!');
}
} catch (e) {
print(e);
}
}
二、下载文件
1、安装包
open_file | Dart Package
lecle_downloads_path_provider | Dart Package
2、引用包
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:open_file/open_file.dart';
import 'package:lecle_downloads_path_provider/lecle_downloads_path_provider.dart';
///下载文件
dynamic _downloadFiles(FileItem data) async {
HttpClient httpClient = new HttpClient();
File file;
String filePath = '';
//获取下载文件地址
String? tempPath = (await DownloadsPath.downloadsDirectory())?.path;
print("Downloads:" + tempPath!);
try {
//读取文件
var request = await httpClient.getUrl(Uri.parse(data.path));
var response = await request.close();
if (response.statusCode == 200) {
var bytes = await consolidateHttpClientResponseBytes(response);
filePath = '$tempPath/${data.name}';
file = File(filePath);
//写入文件
await file.writeAsBytes(bytes);
final directory = filePath.substring(0, filePath.lastIndexOf('/'));
try {
//打开文件
await OpenFile.open(directory);
} catch (e) {
print('打开失败');
}
} else
print('Error code: ' + response.statusCode.toString());
} catch (ex) {
print('未找到路径');
}
}
相关链接
发表评论