BzUploader

آپلودر

پنجتا ظاهر مختلف برا اپلودر

Dropzone

ظاهر پیش فرض: ناحیه ی کشیدن و رها کردن. رویداد OnFilesChanged لیست فایل ها را میده.

تعداد فایل: 0

razor
@using BzCore.Components.Uploader
@using BzCore.Enums

<BzUploader Variant="BzUploaderVariant.Dropzone"
            Multiple
            MaxSizeMB="10"
            OnFilesChanged="@(f => _count = f.Count)" />

<p>تعداد فایل: @_count</p>

@code {
    private int _count;
}
پنج ظاهر

کد همه یکی است و فقط Variant عوض میشه.

Compact
Button
Avatar
Gallery
Variant کاربرد
Dropzoneناحیه ی بزرگ کشیدن و رها کردن (پیش فرض)
Compactهمان دراپ زون در فضای کم
Buttonفقط یک دکمه، داخل فرم ها
Avatarتصویر پروفایل، تک فایل
Galleryچند تصویر با پیش نمایش
razor
@using BzCore.Components.Uploader
@using BzCore.Enums

@* Only Variant changes between these. *@
<BzUploader Variant="BzUploaderVariant.Compact" Title="بارگذاری" Hint="کلیک یا کشیدن" />
<BzUploader Variant="BzUploaderVariant.Button"  ButtonText="انتخاب فایل ها" />
<BzUploader Variant="BzUploaderVariant.Avatar"  Multiple="false" Accept="image/*" />
<BzUploader Variant="BzUploaderVariant.Gallery" Accept="image/*" />
محدودیت ها و خواندن فایل

با MaxSizeMB، MaxFiles و Accept اینپوت را محدود کنید؛ سپس فایل ها را در سرور ذخیره کنید.

پارامتر پیش فرض توضیح
Multipletrueاجازه ی چند فایل
MaxSizeMB10حداکثر حجم هر فایل
MaxFiles20حداکثر تعداد فایل
Acceptپسوندها یا MIME مجاز
OnFilesChangedIReadOnlyList<BzUploadFile>
razor
@using BzCore.Components.Uploader
@using BzCore.Enums

<BzUploader Variant="BzUploaderVariant.Dropzone"
            Multiple
            MaxSizeMB="2"
            MaxFiles="3"
            Accept=".pdf,.docx"
            Title="فقط PDF و Word"
            Hint="حداکثر 3 فایل، هرکدام تا 2 مگابایت"
            OnFilesChanged="OnFiles" />

@if (_names.Count > 0)
{
    <p>@string.Join(" | ", _names)</p>
}

@code {
    private List<string> _names = new();

    private async Task OnFiles(IReadOnlyList<BzUploadFile> files)
    {
        _names = files.Select(f => f.Name).ToList();

        // Saving to disk — always re-check the limit on the server too.
        foreach (var f in files)
        {
            var path = Path.Combine("uploads", f.Name);
            await using var target = File.Create(path);

            // f.File is the underlying IBrowserFile.
            await using var source = f.File.OpenReadStream(2 * 1024 * 1024);
            await source.CopyToAsync(target);
        }
    }
}

@*
BzUploadFile members:
    string  Name          file name
    long    Size          size in bytes
    string  ContentType   MIME type
    bool    IsImage       true when ContentType starts with image/
    string? PreviewUrl    preview for image variants
    IBrowserFile File     the raw Blazor file, for reading the stream
*@