Blazor Server可直接用IFormFile和XDocument.Load解析XML,而Blazor WebAssembly需JS读取为字符串或ArrayBuffer后由C#解析;两者在文件访问、编码处理、大文件支持及部署限制上存在根本差异。
Blazor Server 可以直接用 FileStream 或 IFormFile 读取上传的 XML 文件并解析,而 Blazor WebAssembly 无法访问本地文件系统,必须通过 JavaScript 读取为字符串或 ArrayBuffer 后传回 C# 处理——这是最根本的区别。
Blazor Server:直接用 IFormFile 解析上传的 XML
Server 端运行在 .NET 完整环境中,能直接接收表单提交的 XML 文件,并用标准类库解析:
-
XDocument.Load(file.OpenReadStream())可直接加载流,无需额外转换 - 支持同步/异步读取,可结合
XmlReader流式处理大文件,避免内存爆涨 - 若 XML 来自内部可信系统(如 ERP 导出),还可跳过验证直接解析,性能无额外损耗
@page "/upload" @inject HttpClient Http
@message
@code { private string message = "";
private async Task HandleFileSelected(InputFileChangeEventArgs e) { var file = e.File; try { // 注意:Blazor Server 中,file 是 IFormFile,可直接打开流 using var stream = file.OpenReadStream(); var doc = XDocument.Load(stream); var title = doc.Root?.Element("Title")?.Value ?? "未知"; message = $"解析成功:{title}"; } catch (XmlException ex) { message = $"XML 格式错误:{ex.Message}"; } }}