123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- import 'dart:async';
- import 'dart:convert';
- import 'dart:io';
- import 'package:dio/dio.dart';
- import 'package:path/path.dart' as path;
- import 'package:http/http.dart' as http;
- import 'package:upload/file_formdata.dart';
- import 'file_request.dart';
- const String _API_KEY_DEV = "";
- const String _FILE_PATH = "\\build\\app\\outputs\\apk\\release\\app-release.apk";
- void _log(String message) {
- stdout.write(message);
- }
- Future<void> getToken() async {
- _log("\n获取上传token和endpoint中");
- final url = Uri.https("www.pgyer.com", "apiv2/app/getCOSToken");
- var result = await http.post(url, body: {
- "_api_key": "804cf948c5fcf01bc70bb8d086721a58",
- "buildType": "android",
- });
- if (result.statusCode == 200) {
- _log("\n获取token和endpoint成功\n");
- var json = jsonDecode(result.body)["data"];
- final String uploadUrl = json["endpoint"];
- final String key = json["key"];
- final Map<String, dynamic> params = json["params"];
- final String signature = params["signature"];
- final String xCosSecurityToken = params["x-cos-security-token"];
- await upload2(uploadUrl, key, signature, xCosSecurityToken);
- } else {
- _log("\n获取token和endpoint失败\n");
- }
- }
- Future<void> upload(
- String url,
- String key,
- String sign,
- String token,
- ) async {
- final endPoint = Uri.tryParse(url);
- final file = File(Directory.current.path + _FILE_PATH);
- if (endPoint != null) {
- var formData = FileRequest("POST", endPoint, (current, total) {
- _log("\r已上传 ${(current / total * 100).toStringAsFixed(2)}%");
- });
- formData.fields["key"] = key;
- formData.fields["signature"] = sign;
- formData.fields["x-cos-security-token"] = token;
- formData.files.add(await http.MultipartFile.fromPath(
- path.basename(file.path),
- file.path,
- ));
- _log("\n开始上传APK到蒲公英:${DateTime.now().toString()}\n\n");
- var response = await formData.send();
- if (response.statusCode == 204) {
- _log("\n上传APK到蒲公英完成:${DateTime.now().toString()}");
- } else {
- _log("\n上传APK到蒲公英失败:${DateTime.now().toString()}");
- }
- }
- }
- Future<void> upload2(
- String url,
- String key,
- String sign,
- String token,
- ) async {
- final file = File(Directory.current.path + _FILE_PATH);
- var dio = Dio();
- dio.options.connectTimeout = 5000;
- dio.options.receiveTimeout = 5000;
- var form = FileFormData((current, total) {
- stdout.write("\r已上传 ${(current / total * 100).toStringAsFixed(2)}%");
- });
- form.fields.add(MapEntry("key", key));
- form.fields.add(MapEntry("signature", sign));
- form.fields.add(MapEntry("x-cos-security-token", token));
- form.files.add(MapEntry("file", await MultipartFile.fromFile(file.path, filename: path.basename(file.path))));
- _log("\n准备开始上传到蒲公英:${DateTime.now().toString()}\n");
- var response = await dio.post(
- url,
- data: form,
- options: Options(
- method: "POST",
- responseType: ResponseType.json,
- ),
- );
- if (response.statusCode == 204) {
- _log("\n上传APK到蒲公英完成:${DateTime.now().toString()}");
- } else {
- _log("\n上传APK到蒲公英失败:${DateTime.now().toString()}");
- }
- }
|