You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Syncfusion UploadChangeEventArgs获取动态文件路径遇FileSource返回null求助

问题解决:Syncfusion上传组件无法获取本地文件路径的替代方案

核心原因

浏览器出于安全限制,不会向Web应用暴露用户本地文件的真实路径,所以file.FileInfo.FileSource返回null是正常行为,无法通过该属性获取本地路径。

正确实现方式

不要依赖本地路径,而是通过文件流直接处理上传的文件,或者将文件保存到服务器临时目录后使用临时路径。

方案1:直接使用文件流处理(推荐)

修改上传事件处理逻辑,传递文件流给处理方法,同时调整ProcessExcelFiles方法以支持流输入:

private async Task OnChange(UploadChangeEventArgs args)
{
    var fileProcess = new LoadExcelData(Logger, Configuration);

    foreach (var file in args.Files)
    {
        // 直接使用上传文件的流
        using var fileStream = file.Stream;
        // 如果需要文件名可以一并传递
        await fileProcess.ProcessExcelFiles(fileStream, file.Name, UpdateProgressBar); 
    }
}

对应的ProcessExcelFiles方法修改示例(以EPPlus处理Excel为例):

public async Task ProcessExcelFiles(Stream fileStream, string fileName, Action<int> updateProgress)
{
    using var package = new ExcelPackage(fileStream);
    var worksheet = package.Workbook.Worksheets.First();
    
    // 执行Excel解析逻辑
    updateProgress(30);
    
    // 后续业务处理...
    updateProgress(100);
}

方案2:保存到服务器临时目录后使用路径

如果你的ProcessExcelFiles方法必须依赖文件路径,可以先将上传文件保存到服务器临时目录,再传递临时路径:

private async Task OnChange(UploadChangeEventArgs args)
{
    var fileProcess = new LoadExcelData(Logger, Configuration);
    // 创建服务器临时目录(确保有读写权限)
    var tempDir = Path.Combine(Directory.GetCurrentDirectory(), "temp_uploads");
    Directory.CreateDirectory(tempDir);

    foreach (var file in args.Files)
    {
        var tempFilePath = Path.Combine(tempDir, Guid.NewGuid() + Path.GetExtension(file.Name));
        // 将上传流写入临时文件
        using var tempStream = new FileStream(tempFilePath, FileMode.Create);
        await file.Stream.CopyToAsync(tempStream);
        
        // 调用处理方法
        await fileProcess.ProcessExcelFiles(tempFilePath, UpdateProgressBar); 
        
        // 处理完成后删除临时文件(可选)
        File.Delete(tempFilePath);
    }
}

注意事项

  • 不要尝试绕过浏览器的安全限制获取本地路径,这既不符合规范也存在安全风险。
  • 使用临时文件时,要注意清理过期文件,避免服务器磁盘空间被占用。

内容的提问来源于stack exchange,提问作者Urgen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 10:32:08