跳到主要內容

<Uploader /> 元件 Props

<Uploader / 元件是將功能齊全的檔案上傳介面整合到您的 React 應用程式中的主要方式。它建立在廣受歡迎的 Uppy 函式庫之上,並可透過一組全面的 props 進行高度自訂。本指南為所有可用的 props 提供了詳細的參考,讓您可以根據您的特定需求調整上傳工具的行為、外觀和功能。

<Uploader /> 元件是將功能齊全的檔案上傳介面整合到您的 React 應用程式中的主要方式。它建立在廣受歡迎的 Uppy 函式庫之上,並可透過一組全面的 props 進行高度自訂。本指南為所有可用的 props 提供了詳細的參考,讓您可以根據您的特定需求調整上傳工具的行為、外觀和功能。

主要 Props

以下是您可以傳遞給 <Uploader /> 元件的完整 props 列表。

PropTypeDescription
idstringUppy 實例的唯一識別碼。預設為 'Uploader'
popupboolean如果為 true,上傳工具將以彈出對話框的形式呈現,而非內聯。預設為 false
localestring設定 UI 的語言。支援的值包括 'en'、'zh'。預設為 'en'
onAfterResponse(response: any) => void在每次 HTTP 回應(來自 Tus 和 Companion)後觸發的回呼函數。
onUploadFinish(request: any) => void在檔案成功上傳後觸發的關鍵回呼函數。request 物件包含 uploadURL 等詳細資訊。
onOpenFunction在上傳工具 UI(特別是在彈出模式下)開啟時觸發的回呼函數。
onCloseFunction在上傳工具 UI 關閉時觸發的回呼函數。
onChangeFunction每當新增或移除檔案時觸發的回呼函數,提供所有檔案的當前列表。
pluginsstring[] or object[]用於設定啟用哪些 Uppy 插件的陣列。您也可以傳遞自訂插件。詳情請參閱設定插件
installerPropsobject傳遞給 Media Kit 的 ComponentInstaller 的 props,例如 disabled 或自訂的 fallback
uploadedPropsobject自訂 'Uploaded' 插件的設定,包括 paramsonSelectedFiles 回呼。
resourcesPropsobject自訂 'Resources' 插件的設定,包括 paramsonSelectedFiles 回呼。
tusPropsTusOptions直接傳遞給 @uppy/tus 插件的選項物件。所有選項請參閱 Tus 文件
wrapperPropsHTMLAttributes<HTMLDivElement>應用於主包裝 div 元素的 props,包括 sxclassNamestyle
corePropsUppyOptions直接傳遞給 Uppy 核心實例的選項物件。您可以在此設定全域設定,例如 restrictions。所有選項請參閱 Uppy Core 文件
dashboardPropsDashboardOptions直接傳遞給 @uppy/dashboard 插件的選項物件。所有選項請參閱 Uppy Dashboard 文件
apiPathPropsobject用於設定上傳工具和 Companion 的 API 端點的物件。
dropTargetPropsDropTarget@uppy/drop-target 插件的設定,允許將檔案拖放到指定的元素上進行上傳。
initialFilesany[]在上傳工具初始化時,用來預先填充的檔案物件陣列。
imageEditorPropsImageEditorOptions直接傳遞給 @uppy/image-editor 插件的選項物件。所有選項請參閱 Uppy Image Editor 文件

關鍵 Props 詳解

onUploadFinish

這是最重要的回呼之一。它在後端成功處理並儲存每個檔案後觸發。此回呼會收到一個包含最終 uploadURL 和其他元資料的 result 物件,您可以使用它來更新應用程式的狀態或儲存到資料庫中。

UploadHandler.jsx

javascript
import React, { useState } from 'react';
import Uploader from '@blocklet/uploader/react';

export default function UploadHandler() {
  const [fileUrl, setFileUrl] = useState('');

  const handleUploadFinish = (result) => {
    console.log('File uploaded:', result);
    // result 物件包含已上傳檔案的最終 URL
    if (result.uploadURL) {
      setFileUrl(result.uploadURL);
      // 現在您可以將此 URL 儲存到您的狀態或資料庫中
    }
  };

  return (
    <div>
      <Uploader onUploadFinish={handleUploadFinish} />
      {fileUrl && <p>Last upload: <a href={fileUrl}>{fileUrl}</a></p>}
    </div>
  );
}

coreProps

此 prop 讓您能直接存取 Uppy 核心設定。一個主要的使用情境是設定上傳限制,例如檔案類型、檔案數量和檔案大小。

RestrictedUploader.jsx

javascript
import Uploader from '@blocklet/uploader/react';

export default function RestrictedUploader() {
  const restrictions = {
    maxFileSize: 1024 * 1024, // 1 MB
    maxNumberOfFiles: 3,
    allowedFileTypes: ['image/jpeg', 'image/png'],
  };

  return (
    <Uploader
      coreProps={{
        restrictions: restrictions,
      }}
    />
  );
}

plugins

此 prop 允許您自訂 Uploader 儀表板中可用的標籤頁。您可以啟用或停用內建插件,甚至可以新增自己的自訂標籤頁。

關於如何建立您自己的插件的深入探討,請參閱建立自訂插件指南。

CustomPluginUploader.jsx

javascript
import Uploader from '@blocklet/uploader/react';
import { PhotoIcon } from '@heroicons/react/24/solid';

export default function CustomPluginUploader() {
  const customPlugins = [
    {
      id: 'MyCustomPlugin',
      options: {
        id: 'MyCustomPlugin',
        title: 'My Photos',
        icon: <PhotoIcon />,
      },
      onShowPanel: (ref) => {
        // 顯示自訂面板內容的邏輯
        console.log('Custom panel shown!', ref);
      },
    },
  ];

  return (
    <Uploader
      plugins={['Webcam', 'Url', ...customPlugins]}
    />
  );
}

apiPathProps

預設情況下,上傳工具會與位於 /api/uploads(用於 Tus 上傳)和 /api/companion(用於遠端來源)的端點進行通訊。如果您的後端設定不同,您可以覆寫這些路徑。

CustomEndpoints.jsx

javascript
import Uploader from '@blocklet/uploader/react';

export default function CustomEndpoints() {
  const apiPaths = {
    uploader: '/custom/tus-endpoint',
    companion: '/custom/companion-endpoint',
  };

  return (
    <Uploader apiPathProps={apiPaths} />
  );
}

在對這些 props 有了扎實的理解後,您可以設定 Uploader 以適應各種使用情境。若想進行更進階的控制,例如以程式化方式開啟上傳工具,請前往下一節關於 UploaderProvider and Hooks 的內容。