private async Task <bool> SaveToFile(UploadFile file) { // Server Side 使用 // Web Assembly 模式下必须使用 webapi 方式去保存文件到服务器或者数据库中 // 生成写入文件名称 var ret = false; if (!string.IsNullOrEmpty(SiteOptions.WebRootPath)) { var uploaderFolder = Path.Combine(SiteOptions.WebRootPath, $"images{Path.DirectorySeparatorChar}uploader"); file.FileName = $"{Path.GetFileNameWithoutExtension(file.OriginFileName)}-{DateTimeOffset.Now:yyyyMMddHHmmss}{Path.GetExtension(file.OriginFileName)}"; var fileName = Path.Combine(uploaderFolder, file.FileName); ReadToken ??= new CancellationTokenSource(); ret = await file.SaveToFile(fileName, MaxFileLength, ReadToken.Token); if (ret) { // 保存成功 file.PrevUrl = $"images/uploader/{file.FileName}"; } else { await ToastService.Error("上传文件", $"保存文件失败 {file.OriginFileName}"); } } else { await ToastService.Information("保存文件", "当前模式为 WebAssembly 模式,请调用 Webapi 模式保存文件到服务器端或数据库中"); } return(ret); }
private async Task OnCardUpload(UploadFile file) { if (file != null && file.File != null) { // 服务器端验证当文件大于 2MB 时提示文件太大信息 if (file.Size > MaxFileLength) { await ToastService.Information("上传文件", $"文件大小超过 200MB"); file.Code = 1; file.Error = "文件大小超过 200MB"; } else { await SaveToFile(file); } } }
private async Task OnCardUpload(IEnumerable <UploadFile> files) { var file = files.FirstOrDefault(); if (file != null && file.File != null) { // 服务器端验证当文件大于 2MB 时提示文件太大信息 if (file.Size > MaxFileLength) { await ToastService.Information("上传文件", $"文件大小超过 200MB"); file.Code = 1; file.Error = "文件大小超过 200MB"; } else { await SaveToFile(file); } } }
/// <summary> /// 渲染完成事件 /// </summary> /// <param name="firstRender"></param> /// <returns></returns> protected override async Task OnAfterRenderAsync(bool firstRender) { await base.OnAfterRenderAsync(firstRender); if (firstRender) { if (OperatingSystem.IsBrowser()) { await ToastService.Information("显示图片", "当前模式为 WebAssembly 模式,无法直接调用 wwwroot 文件夹,请自行生成图片测试。"); } else { var filePath = Path.Combine(SiteOptions.Value.WebRootPath, "favicon.png"); TempUrl = await downloadService.CreateUrlAsync("favicon.png", File.OpenRead(filePath), "image/jpeg"); StateHasChanged(); } } }