@page "/UploadData" @using System.ComponentModel.DataAnnotations; @using System.Text.Json; @using System.ComponentModel @using AntDesign.TableModels @using AntDesign.Form @using System.Linq @using System.Net.Http.Headers @using Microsoft.Extensions.Logging @inject HttpClient Http @inject ILogger Logger @using wispro.sp.share

请选择包括绩效事项记录的Excel文件

请从维德流程管理系统中导出上月的申请案件完成事项报表文件,并将其上传到系统开始绩效核算流程

Get me a file!

@code { public class Model { public DateTime? Month { get; set; } = DateTime.Now.AddMonths(-1); } private Model model = new Model(); private void OnFinish(EditContext editContext) { } private void OnFinishFailed(EditContext editContext) { } private List files = new(); private List uploadResults = new(); private int maxAllowedFiles = 3; private bool shouldRender; protected override bool ShouldRender() => shouldRender; private async void OnSingleCompleted(AntDesign.UploadInfo uploadInfo) { long maxFileSize = 1024 * 1024 * 15; //Stream fs = uploadInfo.File.OpenReadStream(maxFileSize); //await fs.CopyToAsync(memoryStream); //Assembly assembly = Assembly.Load(memoryStream.ToArray()); } private async System.Threading.Tasks.Task OnInputFileChange(InputFileChangeEventArgs e) { shouldRender = false; long maxFileSize = 1024 * 1024 * 15; var upload = false; using var content = new MultipartFormDataContent(); foreach (var file in e.GetMultipleFiles(maxAllowedFiles)) { if (uploadResults.SingleOrDefault( f => f.FileName == file.Name) is null) { try { var fileContent = new StreamContent(file.OpenReadStream(maxFileSize)); fileContent.Headers.ContentType = new MediaTypeHeaderValue(file.ContentType); files.Add(new() { Name = file.Name }); content.Add( content: fileContent, name: "\"files\"", fileName: file.Name); upload = true; } catch (Exception ex) { Logger.LogInformation( "{FileName} not uploaded (Err: 6): {Message}", file.Name, ex.Message); uploadResults.Add( new() { FileName = file.Name, ErrorCode = 6, Uploaded = false }); } } } if (upload) { var response = await Http.PostAsync("http://localhost:39476/api/AttachFiles/PostFile", content); var newUploadResults = await response.Content .ReadFromJsonAsync>(); uploadResults = uploadResults.Concat(newUploadResults).ToList(); } shouldRender = true; } private static bool FileUpload(IList uploadResults, string fileName, ILogger logger, out UploadResult result) { result = uploadResults.SingleOrDefault(f => f.FileName == fileName); if (result is null) { logger.LogInformation("{FileName} not uploaded (Err: 5)", fileName); result = new(); result.ErrorCode = 5; } return result.Uploaded; } private class File { public string Name { get; set; } } }