Skip to content

Commit 65992a3

Browse files
committed
feature:complete lsky image upload
1 parent f52e15a commit 65992a3

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import 'dart:convert';
2+
3+
import 'package:dio/dio.dart';
4+
import 'package:flutter_picgo/api/lsky_api.dart';
5+
import 'package:flutter_picgo/model/lsky_config.dart';
6+
import 'package:flutter_picgo/model/uploaded.dart';
7+
import 'package:flutter_picgo/resources/pb_type_keys.dart';
8+
import 'package:flutter_picgo/utils/image_upload.dart';
9+
import 'dart:io';
10+
11+
import 'package:flutter_picgo/utils/strategy/image_upload_strategy.dart';
12+
import 'package:flutter_picgo/utils/strings.dart';
13+
14+
class LskyImageUpload implements ImageUploadStrategy {
15+
@override
16+
Future<Uploaded> delete(Uploaded uploaded) async {
17+
return uploaded;
18+
}
19+
20+
@override
21+
Future<Uploaded> upload(File file, String renameImage) async {
22+
String configStr = await ImageUploadUtils.getPBConfig(PBTypeKeys.lsky);
23+
if (isBlank(configStr)) {
24+
throw LskyError(error: '读取配置文件错误!请重试');
25+
}
26+
LskyConfig config = LskyConfig.fromJson(json.decode(configStr));
27+
FormData formData = FormData.fromMap({
28+
"image": await MultipartFile.fromFile(file.path, filename: renameImage),
29+
});
30+
var result = await LskyApi.upload(config.token, config.host, formData);
31+
if (result['code'] == 200) {
32+
var uploadedItem =
33+
Uploaded(-1, '${result['data']['url']}', PBTypeKeys.lsky, info: '');
34+
await ImageUploadUtils.saveUploadedItem(uploadedItem);
35+
return uploadedItem;
36+
} else {
37+
throw new LskyError(error: '${result['msg']}');
38+
}
39+
}
40+
}
41+
42+
class LskyError implements Exception {
43+
LskyError({
44+
this.error,
45+
});
46+
47+
dynamic error;
48+
49+
String get message => (error?.toString() ?? '');
50+
51+
@override
52+
String toString() {
53+
var msg = 'LskyError $message';
54+
if (error is Error) {
55+
msg += '\n${error.stackTrace}';
56+
}
57+
return msg;
58+
}
59+
}

lib/utils/strategy/upload_strategy_factory.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import 'package:flutter_picgo/utils/strategy/impl/aliyun_image_upload.dart';
33
import 'package:flutter_picgo/utils/strategy/impl/gitee_image_upload.dart';
44
import 'package:flutter_picgo/utils/strategy/impl/github_image_upload.dart';
55
import 'package:flutter_picgo/utils/strategy/image_upload_strategy.dart';
6+
import 'package:flutter_picgo/utils/strategy/impl/lsky_image_upload.dart';
67
import 'package:flutter_picgo/utils/strategy/impl/niupic_image_upload.dart';
78
import 'package:flutter_picgo/utils/strategy/impl/qiniu_image_upload.dart';
89
import 'package:flutter_picgo/utils/strategy/impl/smms_image_upload.dart';
@@ -39,6 +40,9 @@ class UploadStrategyFactory {
3940
} else if (type == PBTypeKeys.niupic) {
4041
/// 牛图网
4142
cache[type] = new NiupicImageUpload();
43+
} else if (type == PBTypeKeys.lsky) {
44+
/// 兰空
45+
cache[type] = new LskyImageUpload();
4246
}
4347
}
4448
return cache[type];

0 commit comments

Comments
 (0)