关于 umbraco-file-upload-preview
这是面向 Umbraco 开发的技能,用于生成文件上传预览扩展。它根据 MIME 类型为上传文件创建自定义可视化预览,并指导开发者查阅文档、生成文件和测试。
主要功能
- 01按 MIME 类型匹配预览
- 02生成扩展清单和元素
- 03支持自定义文件预览
- 04提示查阅最新文档
适用场景
- 01为上传的图像生成缩略图预览
- 02为音频文件设计波形预览
- 03为特定文件格式显示自定义图标
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ umbraco/ umbraco-cms-backoffice-skills --skill umbraco-file-upload-preview安装后在 Claude Code 中输入/umbraco-file-upload-preview确认已加载。
详细介绍
Umbraco 文件上传预览
这是什么?
文件上传预览是自定义 Web 组件,可在 Umbraco 中上传文件时为特定文件类型呈现预览。你可以根据文件的 MIME 类型创建文件的可视化表示,例如显示图片缩略图、音频波形,或特定文件格式的自定义图标。
文档
实施前始终获取最新文档:
- 基础:https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/foundation
- 扩展注册表:https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/extending-overview/extension-registry
- Umbraco Element:https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/foundation/umbraco-element
相关基础技能
- Umbraco Element:用于创建 UI 组件的基类
- 参考技能:
umbraco-umbraco-element
- 参考技能:
工作流
- 获取文档 - 对上述 URL 使用 WebFetch
- 提问 - 需要支持哪些 MIME 类型?预览如何显示?
- 生成文件 - 根据最新文档创建清单和元素
- 说明 - 展示创建了什么以及如何测试
最简示例
清单(manifests.ts)
export const manifests: Array<UmbExtensionManifest> = [
{
type: 'fileUploadPreview',
alias: 'My.FileUploadPreview.Custom',
name: 'Custom File Upload Preview',
weight: 100,
element: () => import('./my-file-preview.element.js'),
forMimeTypes: ['application/pdf', 'application/x-pdf'],
},
];
元素实现(my-file-preview.element.ts)
import { html, customElement, property, state } from '@umbraco-cms/backoffice/external/lit';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import type { UmbFileUploadPreviewElement } from '@umbraco-cms/backoffice/media';
@customElement('my-file-preview')
export class MyFilePreviewElement extends UmbLitElement implements UmbFileUploadPreviewElement {
@property({ type: Object })
file?: File;
@state()
private _previewUrl?: string;
override updated(changedProperties: Map<string, unknown>) {
if (changedProperties.has('file') && this.file) {
this._previewUrl = URL.createObjectURL(this.file);
}
}
override disconnectedCallback() {
super.disconnectedCallback();
if (this._previewUrl) {
URL.revokeObjectURL(this._previewUrl);
}
}
override render() {
if (!this.file) return html``;
return html`
<div class="preview-container">
<uui-icon name="icon-document"></uui-icon>
<span>${this.file.name}</span>
</div>
`;
}
}
export default MyFilePreviewElement;
接口参考
interface ManifestFileUploadPreview extends ManifestElement<UmbFileUploadPreviewElement> {
type: 'fileUploadPreview';
forMimeTypes: string | Array<string>; // e.g., 'image/*', ['image/png', 'image/jpeg']
}
interface UmbFileUploadPreviewElement {
file?: File;
}
常见 MIME 类型模式
image/*- 所有图片类型video/*- 所有视频类型audio/*- 所有音频类型application/pdf- PDF 文件*/*- 所有类型的回退匹配(使用较低的权重)
就是这样!始终获取最新文档,保持示例精简,并生成完整可运行的代码。
评论
支持 Markdown