ストレージサービス


導入
我々のアプリケーションは、データベースだけでなく、ファイルやバイナリデータを保存するためにストレージを必要とするAppWrite豊富なストレージAPIがバンドルされている必要があります.その非常になめらかで使いやすい.それは、アップロード、ダウンロード、プレビュー、さらに画像を操作するAPIを持っています.
ストレージの追加

我々のプロジェクトを管理することができる広範なストレージAPI
ファイル.また、ファイルのダウンロードとアップロードをサポートします.
また、プレビュー画像をサポートし、さまざまなパラメータを提供することによって画像を操作する.
実装

実装について話して、今すぐにストレージを提供するためのホストマシンのストレージを使用してボリュームのアップライトマウントは、AppWriteにアップロードされているすべてのファイルを格納するローカルファイルシステムを使用します.AppWriteはまた、悪意のあるファイルに対してユーザーを保護するためのインターネットアンチウイルスを統合したCLAM ABが付属しています.Cram AVは、それが安全であることを確認するために、保管のすべてのファイルをスキャンします.それ以外のAWSストレージ、デジタルオーシャンスペースやその他のような外部オブジェクトのストレージサービスのサポート
サービスが進行中です.UTOPIA PHPのストレージライブラリの進捗状況を確認できます
サービス.
サービス

AppWrite APIは、ストレージデータを処理するためにいくつかのサービスを提供しています
ダウンロードしてファイルを表示します.
createfile ()
import 'dart:io';
import 'package:appwrite/appwrite.dart';

void main() { // Init SDK
  Client client = Client();
  Storage storage = Storage(client);

  client
    .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint
    .setProject('5df5acd0d48c2') // Your project ID
  ;
  Future result = storage.createFile(
    file: await MultipartFile.fromPath('file', './path-to-files/image.jpg', 'image.jpg'),
  );

  result
    .then((response) {
      print(response);
    }).catchError((error) {
      print(error.response);
  });
}
ファイルを作成するAppWriteストレージに我々のアプリケーションからファイルをアップロードすることができます
我々が保管を呼ぶことができるフラッター.ファイルを作成し、ファイルをパスすることができますフラッタでは、マルチパートファイルのインスタンスとして渡される必要があります同じようなAPIを別のSDKの向こう側には、このような方法を使用してファイルを作成したり、ファイルをAppWriteサーバーにアップロードすることができます.
listfile ()
import 'package:appwrite/appwrite.dart';

void main() { // Init SDK
  Client client = Client();
  Storage storage = Storage(client);

  client
    .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint
    .setProject('5df5acd0d48c2') // Your project ID
  ;
  Future result = storage.listFiles(
  );

  result
    .then((response) {
      print(response);
    }).catchError((error) {
      print(error.response);
  });
}
リストファイルは、ストレージからファイルを一覧表示したり、ファイルのメタデータを一覧表示したり、ファイルの書き込み権限を書き込みます.
getfile ()
import 'package:appwrite/appwrite.dart';

void main() { // Init SDK
  Client client = Client();
  Storage storage = Storage(client);

  client
    .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint
    .setProject('5df5acd0d48c2') // Your project ID
  ;
  Future result = storage.getFile(
    fileId: '[FILE_ID]',
  );

  result
    .then((response) {
      print(response);
    }).catchError((error) {
      print(error.response);
  });
}
get fileでは、個々のファイルIDを渡すことで、個々のファイルのメタデータを取得します.
getFilePreview ()
import 'package:appwrite/appwrite.dart';

void main() { // Init SDK
  Client client = Client();
  Storage storage = Storage(client);

  client
    .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint
    .setProject('5df5acd0d48c2') // Your project ID
  ;
}

//displaying image
FutureBuilder(
  future: storage.getFilePreview(
    fileId: '[FILE_ID]',
  ), //works for both public file and private file, for private files you need to be logged in
  builder: (context, snapshot) {
    return snapshot.hasData && snapshot.data != null
      ? Image.memory(
          snapshot.data,
        )
      : CircularProgressIndicator();
  },
);

我々は重要な機能をファイルのプレビューを取得し、特に
画像の場合は、このメソッドを使用して画像を操作するので、ファイルのプレビューを取得するには
オプションのパラメータはほとんどありません.
我々がたった今望む特定の形とサイズ.それは通過の背景色と高さを渡す作物の幅と高さをサポートしています
PNG、JPGのような出力形式と同様に画質.
そして、境界線のようなより多くの機能、国境半径と不透明度から離れてWebpはAppWriteの次のバージョンで来ている.
getFileDownload ()
import 'package:appwrite/appwrite.dart';

void main() { // Init SDK
  Client client = Client();
  Storage storage = Storage(client);

  client
    .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint
    .setProject('5df5acd0d48c2') // Your project ID
  ;
}

//displaying image
FutureBuilder(
  future: storage.getFileDownload(
    fileId: '[FILE_ID]',
  ), //works for both public file and private file, for private files you need to be logged in
  builder: (context, snapshot) {
    return snapshot.hasData && snapshot.data != null
      ? Image.memory(
          snapshot.data,
        )
      : CircularProgressIndicator();
  },
);
このメソッドはWebで動作する際に
ダウンロードのトリガーがこのエンドポイントを引き起こすように、Content - Dispositionヘッダーは特にWebアプリケーションでは、ブラウザ自体でファイルを開く代わりにファイルをダウンロードしたいです.
getFileView ()
import 'package:appwrite/appwrite.dart';

void main() { // Init SDK
  Client client = Client();
  Storage storage = Storage(client);

  client
    .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint
    .setProject('5df5acd0d48c2') // Your project ID
  ;
}

//displaying image
FutureBuilder(
  future: storage.getFileView(
    fileId: '[FILE_ID]',
  ), //works for both public file and private file, for private files you need to be logged in
  builder: (context, snapshot) {
    return snapshot.hasData && snapshot.data != null
      ? Image.memory(
          snapshot.data,
        )
      : CircularProgressIndicator();
  },
);
このメソッドはGet File Downloadと似ていますが、可能ならばファイルをダウンロードする代わりにブラウザでプレビューされますが、File Loop Viewとダウンロード作業の両方を同様の方法でフラッディングするようにします.
ストレージのコンソールでの使用
あなたが既にプロジェクトを持っている必要がありますし、あなたにログインする必要があります
コンソールと私は水トラッカーを使用しているプロジェクトを選択
プロジェクト

たった今、我々がそうすることができるコンソールから、どんなファイルもそうでありません
オン+右ボタンの順序でファイルをアップロードします.

それで、私にイメージをアップロードさせて、データベースのようにしてください
そして、我々が提供する同様の方法で我々のファイルへのアクセスを書く
ユーザーIDチーム役割またはワイルドカードを使用しているデータベースアイテムへのアクセス
私がファイルを作成するならば
アップロードすることができますファイルをプレビューすることができますここで我々はまた、編集することができますし、アクセス許可のようなメタデータを更新し、我々は新しいウィンドウでファイルを開くことができます参照してください、これはファイルのビューを取得し、我々は画像をダウンロードすることができますを参照してくださいこれはファイルのダウンロードを取得するファイルのダウンロードを開始するファイルをダウンロードすることができます私たちも削除することができますファイルを削除することができますので、これはどのように簡単に我々はコンソールからのストレージの権利を管理することができます.