mirror of
https://github.com/langgenius/dify.git
synced 2026-05-04 17:38:04 +08:00
feat: add ZIP skill import with client-side extraction
Add import skill modal that accepts .zip files via drag-and-drop or file picker, extracts them client-side using fflate, validates structure and security constraints, then batch uploads via presigned URLs. - Add fflate dependency for browser-side ZIP decompression - Create zip-extract.ts with fflate filter API for validation - Create zip-to-upload-tree.ts for BatchUploadNodeInput tree building - Create import-skill-modal.tsx with drag-and-drop support - Lazy-load ImportSkillModal via next/dynamic for bundle optimization - Add en-US and zh-Hans i18n keys for import modal
This commit is contained in:
@ -1081,6 +1081,21 @@
|
||||
"skill.startTab.createModal.title": "Create Blank Skill",
|
||||
"skill.startTab.createSuccess": "Skill \"{{name}}\" created successfully",
|
||||
"skill.startTab.filesIncluded": "{{count}} files included",
|
||||
"skill.startTab.importModal.browseFiles": "Browse Files",
|
||||
"skill.startTab.importModal.changeFile": "Change File",
|
||||
"skill.startTab.importModal.dropHint": "Drop a .zip file here, or",
|
||||
"skill.startTab.importModal.errorEmptyZip": "ZIP file contains no files",
|
||||
"skill.startTab.importModal.errorExtractedTooLarge": "Extracted content is too large",
|
||||
"skill.startTab.importModal.errorInvalidZip": "Invalid ZIP file",
|
||||
"skill.startTab.importModal.errorNoRootFolder": "ZIP must contain exactly one root folder",
|
||||
"skill.startTab.importModal.errorPathTraversal": "ZIP contains unsafe file paths",
|
||||
"skill.startTab.importModal.errorTooManyFiles": "ZIP contains too many files",
|
||||
"skill.startTab.importModal.fileTooLarge": "ZIP file exceeds 50MB limit",
|
||||
"skill.startTab.importModal.importButton": "Import",
|
||||
"skill.startTab.importModal.importSuccess": "Skill \"{{name}}\" imported successfully",
|
||||
"skill.startTab.importModal.invalidFileType": "Please select a .zip file",
|
||||
"skill.startTab.importModal.nameDuplicate": "A skill with this name already exists",
|
||||
"skill.startTab.importModal.title": "Import Skill",
|
||||
"skill.startTab.importSkill": "Import Skill",
|
||||
"skill.startTab.importSkillDesc": "Import skill from skill.zip file",
|
||||
"skill.startTab.searchPlaceholder": "Search…",
|
||||
|
||||
Reference in New Issue
Block a user