cloudinary_public
이 패키지는 API 키나 시크릿 키를 노출하지 않고도 미디어 파일을 직접 Cloudinary에 업로드할 수 있도록 해줍니다.
Cloudinary에 미디어 파일을 업로드하기 위한 Dart 래퍼
아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
This package allows you to upload media files directly to cloudinary, without exposing your apiKey or secretKey.
Add the dependency cloudinary_public: ^0.23.1 to your project:
import 'package:cloudinary_public/cloudinary_public.dart';
final cloudinary = CloudinaryPublic('CLOUD_NAME', 'UPLOAD_PRESET', cache: false);
Check https://cloudinary.com/documentation/upload_images#unsigned_upload on how to create an upload preset.
var image = await ImagePicker.pickImage(source: ImageSource.camera);
try {
CloudinaryResponse response = await cloudinary.uploadFile(
CloudinaryFile.fromFile(image.path, resourceType: CloudinaryResourceType.Image),
);
print(response.secureUrl);
} on CloudinaryException catch (e) {
print(e.message);
print(e.request);
}
final images = await MultiImagePicker.pickImages(maxImages: 4);
List<CloudinaryResponse> uploadedImages = await cloudinary.multiUpload(
images
.map(
(image) => CloudinaryFile.fromFutureByteData(
image.getByteData(),
identifier: image.identifier,
),
)
.toList(),
);
print(uploadedImages[0].secureUrl);
// CloudinaryImage
final cloudinaryImage = CloudinaryImage('https://res.cloudinary.com/demo/image/upload/front_face.png');
// or using the image public id
final cloudinaryImage = cloudinary.getImage('front_face');
final String url = cloudinaryImage.transform().width(150).height(150).gravity('face').crop('thumb').generate();
// or using the shortcut
final String url = cloudinaryImage.thumbnail(width: 150, height: 150).generate();
// Chain example
final url = cloudinaryImage.transform()
.width(150)
.height(150)
.gravity('face')
.crop('thumb')
.chain()
.radius(20)
.chain()
.effect('sepia')
.chain()
.overlay(cloudinary.getImage('cloudinary_icon'))
.gravity('south_east')
.x(5)
.y(5)
.width(50)
.opacity(60)
.effect('brightness:200')
.chain()
.angle(10)
.generate();
// generates
// https://res.cloudinary.com/demo/image/upload/c_thumb,g_face,h_150,w_150/r_20/e_sepia/e_brightness:200,g_south_east,l_cloudinary_icon,o_60,w_50,x_5,y_5/a_10/front_face.png
final res = await cloudinary.uploadFile(
CloudinaryFile.fromFile(
_pickedFile.path,
folder: 'hello-folder',
context: {
'alt': 'Hello',
'caption': 'An example image',
},
),
onProgress: (count, total) {
setState(() {
_uploadingPercentage = (count / total) * 100;
});
},
);
Use chunked upload when file size is more then 100 Megabytes.
By default, the chunk size is set to 20 Megabytes but can be set to as low as 5 Megabytes by using the chunk_size parameter.
Source: https://cloudinary.com/documentation/upload_images#chunked_asset_upload
final res = await cloudinary.uploadFileInChunks(
CloudinaryFile.fromFile(
_pickedFile.path,
folder: 'hello-folder',
context: {
'alt': 'Hello',
'caption': 'An example upload in chunks',
},
),
chunkSize: 10000000
onProgress: (count, total) {
setState(() {
_uploadingPercentage = (count / total) * 100;
});
},
);
의존성 목록 6 개
{"sdk":"flutter"}^5.3.4{"sdk":"flutter"}anyanyany사용 목적에 따라 검색하고 개발 활동을 비교한 뒤 원본 저장소에서 요구 사항을 확인하세요.
“A repository is the most basic element of GitHub.”
GitHub Docs — About repositories ↗