@blocklet/uploader-server パッケージは、ブロックレットのバックエンドで様々なファイル処理タスクを扱うために設計された Express.js ミドルウェアのスイートを提供します。これは、@blocklet/uploader フロントエンドコンポーネントのサーバーサイド対応部分として機能し、ダイレクトファイルアップロード、リモートソースとの統合、リソース提供などの機能を有効にします。
フロントエンドのパートナーとシームレスに連携するように設計されていますが、カスタマイズされたファイルアップロードロジックのスタンドアロンソリューションとしても使用できます。このパッケージは、Express アプリケーションに簡単に統合できるいくつかのモジュラーミドルウェアイニシャライザをエクスポートします。
コアミドルウェアの相互作用
以下の図は、アップロードプロセス中に主要なミドルウェアコンポーネントがフロントエンドおよび外部サービスとどのように相互作用するかを示しています。
インストール
開始するには、パッケージをブロックレットの依存関係に追加します。
Installation
pnpm add @blocklet/uploader-server一般的な使用法
これは、アップロードおよびコンパニオンミドルウェアをExpressアプリケーションのルーターに統合する典型的な例です。必要なミドルウェアを初期化し、そのハンドラーを特定のルートにマウントできます。
Express Router Example
import { initLocalStorageServer, initCompanion } from '@blocklet/uploader-server';
import express from 'express';
// `env`、`user`、`auth`、`ensureComponentDid`、および `Upload` モデルは他の場所で定義されていると仮定します
const router = express.Router();
// 1. 直接アップロードのためにローカルストレージサーバーを初期化します
const localStorageServer = initLocalStorageServer({
path: env.uploadDir, // アップロードを保存するディレクトリ
express,
// オプション:ファイルが正常にアップロードされた後に実行されるコールバック
onUploadFinish: async (req, res, uploadMetadata) => {
const {
id: filename,
size,
metadata: { filename: originalname, filetype: mimetype },
} = uploadMetadata;
// アップロードされたファイルの公開URLを構築します
const obj = new URL(env.appUrl);
obj.protocol = req.get('x-forwarded-proto') || req.protocol;
obj.pathname = `/uploads/${filename}`;
// ファイルのメタデータをデータベースに保存します
const doc = await Upload.insert({
mimetype,
originalname,
filename,
size,
// ... リクエストからの他のメタデータ
});
// フロントエンドにJSONレスポンスを返します
const resData = { url: obj.href, ...doc };
return resData;
},
});
// アップロードハンドラーを特定のルートにマウントします
router.use('/uploads', user, auth, ensureComponentDid, localStorageServer.handle);
// 2. リモートソース(例:URL、Unsplash)のためにCompanionを初期化します
const companion = initCompanion({
path: env.uploadDir,
express,
providerOptions: env.providerOptions, // プロバイダーキー(例:Unsplash)
uploadUrls: [env.appUrl], // アプリのURL
});
// コンパニオンハンドラーをそのルートにマウントします
router.use('/companion', user, auth, ensureComponentDid, companion.handle);利用可能なミドルウェア
このパッケージは、さまざまな機能のためにいくつかのミドルウェアイニシャライザをエクスポートします。カードをクリックして、詳細なAPIリファレンスと設定オプションを表示します。
initLocalStorageServer
ユーザーのコンピュータからの直接のファイルアップロードを処理し、サーバーのローカルストレージに保存します。
initCompanion
Uppy Companionと統合し、ユーザーが直接URLやUnsplashなどのリモートソースからファイルをインポートできるようにします。
initStaticResourceMiddleware
他のインストールされたブロックレットから静的アセット(例:画像、CSS)を提供し、リソース共有を可能にします。
initDynamicResourceMiddleware
指定されたディレクトリからリソースを提供し、リアルタイムでファイルの変更を監視できるため、開発に役立ちます。
次のステップ
@blocklet/uploader-server パッケージは、ブロックレット内で堅牢なファイル処理システムを構築するための不可欠なサーバーサイドのビルディングブロックを提供します。これらのミドルウェア機能を組み合わせることで、ユーザーに機能豊富なアップロード体験を提供できます。
開始するには、initLocalStorageServer のドキュメントを参照して、コアとなる直接アップロード機能を設定することをお勧めします。