パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v0.23.1

cloudinary_public

このパッケージを使用すると、apiKey や secretKey を公開せずに、メディアファイルを直接 Cloudinary にアップロードできます。

AndroidiOSmacOSWindowsLinux
30日間ダウンロード
3780
いいね数
128
Pub ポイント
150

パッケージをインストール

flutter pub add cloudinary_public

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

cloudinary_public パッケージは、Flutter アプリから Cloudinary への直接メディアアップロードを可能にし、機密性の高い API キーを公開する必要がありません。署名されていないアップロードプレセットを使用して、認証を安全に処理し、クライアントがファイルを直接アップロードできるようにしつつ、サーバーサイドのセキュリティを維持します。写真共有やプロフィール画像のアップロードなど、ユーザー生成コンテンツが必要なアプリケーションに最適です。このパッケージは、Android、iOS、macOS、Windows、Linux などの複数のプラットフォームをサポートしています。

用途

  • モバイルアプリからの直接ファイルアップロード
  • ユーザー生成コンテンツのストレージ
  • プロフィール画像のアップロード
  • 画像および動画の管理
  • 資格情報を露出せずに安全なメディア処理

主な機能

  • API キーの漏洩なし
  • 署名なしアップロードプレセットをサポート
  • クロスプラットフォーム互換性
  • Cloudinary とのシンプルな統合
  • リアルタイムでのアップロード進捗のトラッキング

適している対象

  • メディアアップロード付きモバイルアプリ
  • 安全なファイル転送を必要とするアプリ
  • 開発者がバックエンド認証を回避する
  • Cloudinary をメディアストレージに使用しているプロジェクト
  • フロントエンド専用のメディア処理

注意事項

  • Cloudinary アップロードプレセットの設定が必要です
  • 署名なしのアップロードに制限
  • Cloudinary の無料トライアルまたは有料プランに依存します
  • 個人的または制限されたメディアには適していません
  • Cloudinaryダッシュボードを正しく設定する必要があります

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

cloudinary_public

Build Status Coverage Status

This package allows you to upload media files directly to cloudinary, without exposing your apiKey or secretKey.

Getting started

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.

Using Image Picker Plugin
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);
}
Using Multi Image Picker Plugin
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);

Image Transformation

// 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

Upload Progress

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;
    });
  },
);

Upload In Chunks

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;
    });
  },
);

カテゴリー

依存関係

依存関係一覧 1 件

ソースリポジトリ

このパッケージを使用しているプロジェクト