一、基础配置

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('未找到路径');

}

}

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: