Skip to content

Commit 6459b87

Browse files
committed
feature:complete niupic image upload
1 parent 0f901b0 commit 6459b87

File tree

3 files changed

+69
-0
lines changed

3 files changed

+69
-0
lines changed

lib/api/niupic_api.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import 'package:dio/dio.dart';
2+
import 'package:flutter_picgo/utils/net.dart';
3+
4+
class NiupicApi {
5+
static const BASE_URL = 'https://www.niupic.com/';
6+
7+
static Future upload(FormData data) async {
8+
Response res = await NetUtils.getInstance()
9+
.post(BASE_URL + 'index/upload/process', data: data);
10+
return res.data;
11+
}
12+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import 'package:dio/dio.dart';
2+
import 'package:flutter_picgo/api/niupic_api.dart';
3+
import 'package:flutter_picgo/model/uploaded.dart';
4+
import 'package:flutter_picgo/resources/pb_type_keys.dart';
5+
import 'package:flutter_picgo/utils/image_upload.dart';
6+
import 'dart:io';
7+
8+
import 'package:flutter_picgo/utils/strategy/image_upload_strategy.dart';
9+
10+
class NiupicImageUpload implements ImageUploadStrategy {
11+
/// 牛图网不支持删除
12+
@override
13+
Future<Uploaded> delete(Uploaded uploaded) async {
14+
return uploaded;
15+
}
16+
17+
@override
18+
Future<Uploaded> upload(File file, String renameImage) async {
19+
FormData formData = FormData.fromMap({
20+
"image_field":
21+
await MultipartFile.fromFile(file.path, filename: renameImage),
22+
});
23+
var result = await NiupicApi.upload(formData);
24+
if (result["code"] == 200) {
25+
var uploadedItem = Uploaded(
26+
-1, 'https://${result['data']}', PBTypeKeys.niupic,
27+
info: '');
28+
await ImageUploadUtils.saveUploadedItem(uploadedItem);
29+
return uploadedItem;
30+
} else {
31+
throw new NiupicError(error: '${result['msg']}');
32+
}
33+
}
34+
}
35+
36+
class NiupicError implements Exception {
37+
NiupicError({
38+
this.error,
39+
});
40+
41+
dynamic error;
42+
43+
String get message => (error?.toString() ?? '');
44+
45+
@override
46+
String toString() {
47+
var msg = 'NiupicError $message';
48+
if (error is Error) {
49+
msg += '\n${error.stackTrace}';
50+
}
51+
return msg;
52+
}
53+
}

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/niupic_image_upload.dart';
67
import 'package:flutter_picgo/utils/strategy/impl/qiniu_image_upload.dart';
78
import 'package:flutter_picgo/utils/strategy/impl/smms_image_upload.dart';
89
import 'package:flutter_picgo/utils/strategy/impl/tcyun_image_upload.dart';
@@ -35,6 +36,9 @@ class UploadStrategyFactory {
3536
} else if (type == PBTypeKeys.tcyun) {
3637
/// 腾讯云
3738
cache[type] = new TcyunImageUpload();
39+
} else if (type == PBTypeKeys.niupic) {
40+
/// 牛图网
41+
cache[type] = new NiupicImageUpload();
3842
}
3943
}
4044
return cache[type];

0 commit comments

Comments
 (0)