mirror of
https://github.com/cloudreve/frontend.git
synced 2025-12-25 19:52:48 +00:00
feat(uploader): concurrent chunk uploads for local/remote storage policy
This commit is contained in:
parent
a095f8c612
commit
35961604a1
|
|
@ -816,7 +816,7 @@
|
|||
"nativeThumbNailsGeneralObs": "Für Huawei Cloud OBS-Speicher wird der <0>Bildverarbeitungsservice</0> verwendet, um Miniaturbilder zu generieren.",
|
||||
"nativeThumbNailsGeneralUpyun": "Für Upyun-Speicher wird der <0>Bildverarbeitungsservice</0> verwendet, um Miniaturbilder zu generieren.",
|
||||
"preallocate": "Festplattenspeicher vorab zuweisen",
|
||||
"preallocateDes": "Wenn aktiviert, wird der Upload-Anfrage des Benutzers Festplattenspeicher auf dem Speicherknoten vorab zugewiesen, nur wirksam unter Linux oder Darwin.",
|
||||
"preallocateDes": "Wenn aktiviert, wird der Upload-Anfrage des Benutzers Festplattenspeicher auf dem Speicherknoten vorab zugewiesen, und unterstützt auch parallele Chunk-Uploads. Nur wirksam unter Linux oder Darwin.",
|
||||
"chunkConcurrency": "Parallele Chunk-Uploads",
|
||||
"chunkConcurrencyDes": "Legt die Anzahl der gleichzeitigen Chunk-Uploads beim direkten Web-Upload fest.",
|
||||
"sourceWebEdit": "Web-Online-Bearbeitung",
|
||||
|
|
|
|||
|
|
@ -817,7 +817,7 @@
|
|||
"nativeThumbNailsGeneralObs": "For Huawei Cloud OBS storage, <0>image processing</0> service will be used to generate thumbnails.",
|
||||
"nativeThumbNailsGeneralUpyun": "For Upyun storage, <0>image processing</0> service will be used to generate thumbnails.",
|
||||
"preallocate": "Pre-allocate disk space",
|
||||
"preallocateDes": "When enabled, the user's upload request will be pre-allocated disk space on the storage node, only effective on Linux or Darwin.",
|
||||
"preallocateDes": "When enabled, the user's upload request will be pre-allocated disk space on the storage node, and also supports parallel chunk upload. Only effective on Linux or Darwin.",
|
||||
"chunkConcurrency": "Concurrent chunk uploads",
|
||||
"chunkConcurrencyDes": "Set the number of concurrent chunk uploads when using direct web upload.",
|
||||
"sourceWebEdit": "Web online editing",
|
||||
|
|
|
|||
|
|
@ -816,7 +816,7 @@
|
|||
"nativeThumbNailsGeneralObs": "Para almacenamiento Huawei Cloud OBS, el servicio de <0>procesamiento de imágenes</0> se usará para generar miniaturas.",
|
||||
"nativeThumbNailsGeneralUpyun": "Para almacenamiento Upyun, el servicio de <0>procesamiento de imágenes</0> se usará para generar miniaturas.",
|
||||
"preallocate": "Pre-asignar espacio en disco",
|
||||
"preallocateDes": "Cuando esté habilitado, la solicitud de subida del usuario pre-asignará espacio en disco en el nodo de almacenamiento, solo efectivo en Linux o Darwin.",
|
||||
"preallocateDes": "Cuando esté habilitado, la solicitud de subida del usuario pre-asignará espacio en disco en el nodo de almacenamiento, y también admite la carga paralela de fragmentos. Solo efectivo en Linux o Darwin.",
|
||||
"chunkConcurrency": "Subidas de fragmentos concurrentes",
|
||||
"chunkConcurrencyDes": "Establece el número de subidas de fragmentos concurrentes al usar subida directa web.",
|
||||
"sourceWebEdit": "Edición en línea web",
|
||||
|
|
|
|||
|
|
@ -816,7 +816,7 @@
|
|||
"nativeThumbNailsGeneralObs": "Pour le stockage Huawei Cloud OBS, le service de <0>traitement d'images</0> sera utilisé pour générer des miniatures.",
|
||||
"nativeThumbNailsGeneralUpyun": "Pour le stockage Upyun, le service de <0>traitement d'images</0> sera utilisé pour générer des miniatures.",
|
||||
"preallocate": "Pré-allouer l'espace disque",
|
||||
"preallocateDes": "Lorsqu'activé, la demande d'upload de l'utilisateur pré-allouera l'espace disque sur le nœud de stockage, efficace seulement sur Linux ou Darwin.",
|
||||
"preallocateDes": "Lorsqu'activé, la demande d'upload de l'utilisateur pré-allouera l'espace disque sur le nœud de stockage, et prend également en charge le téléchargement parallèle de chunks. Efficace seulement sur Linux ou Darwin.",
|
||||
"chunkConcurrency": "Uploads de chunks concurrents",
|
||||
"chunkConcurrencyDes": "Définit le nombre d'uploads de chunks concurrents lors de l'utilisation de l'upload direct web.",
|
||||
"sourceWebEdit": "Édition en ligne Web",
|
||||
|
|
|
|||
|
|
@ -816,7 +816,7 @@
|
|||
"nativeThumbNailsGeneralObs": "Per l'archiviazione Huawei Cloud OBS, verrà utilizzato il servizio <0>elaborazione immagini</0> per generare miniature.",
|
||||
"nativeThumbNailsGeneralUpyun": "Per l'archiviazione Upyun, verrà utilizzato il servizio <0>elaborazione immagini</0> per generare miniature.",
|
||||
"preallocate": "Pre-alloca spazio disco",
|
||||
"preallocateDes": "Quando abilitato, la richiesta di caricamento dell'utente pre-allocherà spazio disco sul nodo di archiviazione, efficace solo su Linux o Darwin.",
|
||||
"preallocateDes": "Quando abilitato, la richiesta di caricamento dell'utente pre-allocherà spazio disco sul nodo di archiviazione, e supporta anche il caricamento parallelo di chunk. Efficace solo su Linux o Darwin.",
|
||||
"chunkConcurrency": "Caricamenti chunk concorrenti",
|
||||
"chunkConcurrencyDes": "Imposta il numero di caricamenti chunk concorrenti quando si utilizza il caricamento diretto web.",
|
||||
"sourceWebEdit": "Modifica online web",
|
||||
|
|
|
|||
|
|
@ -817,7 +817,7 @@
|
|||
"nativeThumbNailsGeneralObs": "Huawei Cloud OBSストレージの場合、<0>画像処理</0>サービスを使用してサムネイルを生成します。",
|
||||
"nativeThumbNailsGeneralUpyun": "Upyun ストレージの場合、<0>画像処理</0>サービスを使用してサムネイルを生成します。",
|
||||
"preallocate": "ディスク領域の事前割り当て",
|
||||
"preallocateDes": "有効にすると、ユーザーがファイルをアップロードする際にディスク領域が事前に割り当てられます。LinuxまたはDarwinでのみ有効です。",
|
||||
"preallocateDes": "有効にすると、ユーザーがファイルをアップロードする際にディスク領域が事前に割り当てられ、同時に並行チャンクアップロードもサポートします。LinuxまたはDarwinでのみ有効です。",
|
||||
"chunkConcurrency": "並行チャンクアップロード数",
|
||||
"chunkConcurrencyDes": "Webダイレクトアップロード時の並行チャンクアップロード数を設定します。",
|
||||
"sourceWebEdit": "Webオンライン編集",
|
||||
|
|
|
|||
|
|
@ -817,7 +817,7 @@
|
|||
"nativeThumbNailsGeneralObs": "Huawei Cloud OBS 스토리지의 경우 <0>이미지 처리</0> 서비스를 사용하여 썸네일을 생성합니다.",
|
||||
"nativeThumbNailsGeneralUpyun": "Upyun 스토리지의 경우 <0>이미지 처리</0> 서비스를 사용하여 썸네일을 생성합니다.",
|
||||
"preallocate": "하드 디스크 공간 사전 할당",
|
||||
"preallocateDes": "활성화하면 사용자가 파일을 업로드할 때 하드 디스크 공간을 미리 할당하며, Linux 또는 Darwin에서만 유효합니다.",
|
||||
"preallocateDes": "활성화하면 사용자가 파일을 업로드할 때 하드 디스크 공간을 미리 할당하며, 동시에 병렬 청크 업로드도 지원합니다. Linux 또는 Darwin에서만 유효합니다.",
|
||||
"chunkConcurrency": "병렬 청크 업로드 수",
|
||||
"chunkConcurrencyDes": "웹 직접 업로드 시 동시 진행되는 청크 업로드 수를 설정합니다.",
|
||||
"sourceWebEdit": "웹 온라인 편집",
|
||||
|
|
|
|||
|
|
@ -816,7 +816,7 @@
|
|||
"nativeThumbNailsGeneralObs": "Para armazenamento Huawei Cloud OBS, o serviço de <0>processamento de imagem</0> será usado para gerar miniaturas.",
|
||||
"nativeThumbNailsGeneralUpyun": "Para armazenamento Upyun, o serviço de <0>processamento de imagem</0> será usado para gerar miniaturas.",
|
||||
"preallocate": "Pré-alocar espaço em disco",
|
||||
"preallocateDes": "Quando habilitado, a solicitação de upload do usuário pré-alocará espaço em disco no nó de armazenamento, eficaz apenas no Linux ou Darwin.",
|
||||
"preallocateDes": "Quando habilitado, a solicitação de upload do usuário pré-alocará espaço em disco no nó de armazenamento, e também suporta upload paralelo de chunks. Eficaz apenas no Linux ou Darwin.",
|
||||
"chunkConcurrency": "Uploads de chunk concorrentes",
|
||||
"chunkConcurrencyDes": "Define o número de uploads de chunk concorrentes ao usar upload direto da web.",
|
||||
"sourceWebEdit": "Edição online na Web",
|
||||
|
|
|
|||
|
|
@ -818,7 +818,7 @@
|
|||
"nativeThumbNailsGeneralObs": "Для хранилища Huawei Cloud OBS будет использоваться служба <0>обработки изображений</0> для генерации миниатюр.",
|
||||
"nativeThumbNailsGeneralUpyun": "Для хранилища Upyun будет использоваться служба <0>обработки изображений</0> для генерации миниатюр.",
|
||||
"preallocate": "Предварительное выделение дискового пространства",
|
||||
"preallocateDes": "При включении дисковое пространство будет предварительно выделяться при загрузке файлов пользователями. Действует только в Linux или Darwin.",
|
||||
"preallocateDes": "При включении дисковое пространство будет предварительно выделяться при загрузке файлов пользователями, а также поддерживает параллельную загрузку фрагментов. Действует только в Linux или Darwin.",
|
||||
"chunkConcurrency": "Параллельная загрузка фрагментов",
|
||||
"chunkConcurrencyDes": "Устанавливает количество параллельных загрузок фрагментов при прямой веб-загрузке.",
|
||||
"sourceWebEdit": "Веб-редактирование онлайн",
|
||||
|
|
|
|||
|
|
@ -817,7 +817,7 @@
|
|||
"nativeThumbNailsGeneralObs": "对于华为云 OBS 存储,<0>图片处理</0>服务会被用来生成缩略图。",
|
||||
"nativeThumbNailsGeneralUpyun": "对于又拍云存储,<0>图片处理</0>服务会被用来生成缩略图。",
|
||||
"preallocate": "预分配硬盘空间",
|
||||
"preallocateDes": "开启后,用户上传文件时会预先分配硬盘空间,只在 Linux 或 Darwin 下有效。",
|
||||
"preallocateDes": "开启后,用户上传文件时会预先分配硬盘空间,同时也可支持并行分片上传。只在 Linux 或 Darwin 下有效。",
|
||||
"chunkConcurrency": "并行上传分片数",
|
||||
"chunkConcurrencyDes": "设定 Web 端直传时,同时进行的分片上传数量。",
|
||||
"sourceWebEdit": "Web 在线编辑",
|
||||
|
|
|
|||
|
|
@ -817,7 +817,7 @@
|
|||
"nativeThumbNailsGeneralObs": "對於華為雲 OBS 儲存,<0>圖片處理</0>服務會被用來生成縮圖。",
|
||||
"nativeThumbNailsGeneralUpyun": "對於又拍雲端儲存,<0>圖片處理</0>服務會被用來生成縮圖。",
|
||||
"preallocate": "預分配硬碟空間",
|
||||
"preallocateDes": "開啟後,使用者上傳檔案時會預先分配硬碟空間,只在 Linux 或 Darwin 下有效。",
|
||||
"preallocateDes": "開啟後,使用者上傳檔案時會預先分配硬碟空間,同時也可支援並行分片上傳。只在 Linux 或 Darwin 下有效。",
|
||||
"chunkConcurrency": "並行上傳分片數",
|
||||
"chunkConcurrencyDes": "設定 Web 端直傳時,同時進行的分片上傳數量。",
|
||||
"sourceWebEdit": "Web 線上編輯",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,13 @@
|
|||
import { FormControl, FormControlLabel, InputAdornment, Link, MenuItem, Switch, Typography } from "@mui/material";
|
||||
import {
|
||||
Collapse,
|
||||
FormControl,
|
||||
FormControlLabel,
|
||||
InputAdornment,
|
||||
Link,
|
||||
MenuItem,
|
||||
Switch,
|
||||
Typography,
|
||||
} from "@mui/material";
|
||||
import { useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
||||
import { Trans, useTranslation } from "react-i18next";
|
||||
import { StoragePolicy } from "../../../../../api/dashboard";
|
||||
|
|
@ -29,6 +38,19 @@ const StorageAndUploadSection = () => {
|
|||
return values.type === PolicyType.local || values.type === PolicyType.remote;
|
||||
}, [values.type]);
|
||||
|
||||
const showChunkConcurrency = useMemo(() => {
|
||||
return (
|
||||
values.type === PolicyType.s3 ||
|
||||
values.type === PolicyType.local ||
|
||||
values.type === PolicyType.remote ||
|
||||
values.type === PolicyType.ks3 ||
|
||||
values.type === PolicyType.cos ||
|
||||
values.type === PolicyType.obs ||
|
||||
values.type === PolicyType.oss ||
|
||||
values.type === PolicyType.qiniu
|
||||
);
|
||||
}, [values.type]);
|
||||
|
||||
const onDirNameChange = useCallback(
|
||||
(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
setPolicy((p: StoragePolicy) => ({ ...p, dir_name_rule: e.target.value }));
|
||||
|
|
@ -362,29 +384,26 @@ const StorageAndUploadSection = () => {
|
|||
</FormControl>
|
||||
</SettingForm>
|
||||
)}
|
||||
{(values.type === PolicyType.s3 ||
|
||||
values.type === PolicyType.ks3 ||
|
||||
values.type === PolicyType.cos ||
|
||||
values.type === PolicyType.obs ||
|
||||
values.type === PolicyType.oss ||
|
||||
values.type === PolicyType.qiniu) && (
|
||||
<SettingForm lgWidth={5} title={t("policy.chunkConcurrency")}>
|
||||
<FormControl fullWidth>
|
||||
<DenseFilledTextField
|
||||
value={values.settings?.chunk_concurrency ?? 1}
|
||||
onChange={onChunkConcurrencyChange}
|
||||
slotProps={{
|
||||
htmlInput: {
|
||||
type: "number",
|
||||
min: 1,
|
||||
mac: 10,
|
||||
},
|
||||
}}
|
||||
/>
|
||||
<NoMarginHelperText>{t("policy.chunkConcurrencyDes")}</NoMarginHelperText>
|
||||
</FormControl>
|
||||
</SettingForm>
|
||||
)}
|
||||
<Collapse in={(!showPreallocate || values.settings?.pre_allocate) && showChunkConcurrency} unmountOnExit>
|
||||
{showChunkConcurrency && (
|
||||
<SettingForm lgWidth={5} title={t("policy.chunkConcurrency")}>
|
||||
<FormControl fullWidth>
|
||||
<DenseFilledTextField
|
||||
value={values.settings?.chunk_concurrency ?? 1}
|
||||
onChange={onChunkConcurrencyChange}
|
||||
slotProps={{
|
||||
htmlInput: {
|
||||
type: "number",
|
||||
min: 1,
|
||||
mac: 10,
|
||||
},
|
||||
}}
|
||||
/>
|
||||
<NoMarginHelperText>{t("policy.chunkConcurrencyDes")}</NoMarginHelperText>
|
||||
</FormControl>
|
||||
</SettingForm>
|
||||
)}
|
||||
</Collapse>
|
||||
{values.type !== PolicyType.local && (
|
||||
<>
|
||||
<SettingForm lgWidth={5}>
|
||||
|
|
|
|||
Loading…
Reference in New Issue