【问题标题】:How do I send file back after Kendo upload剑道上传后如何发回文件
【发布时间】:2014-04-26 09:34:07
【问题描述】:

我有以下要求。我需要将 Excel 文件上传到基于 MVC 的站点。为此,我正在使用 Kendo Upload。在处理上传的控制器操作中,我需要对 Excel 文件稍作修改,然后将其作为文件流发送回来。我正在使用 Aspose 进行 Excel 修改。我的问题是,我能否在一个控制器操作中实现所有这一切,而不会让 Excel 文件访问 Web 服务器的磁盘?

【问题讨论】:

    标签: upload kendo-ui filestream


    【解决方案1】:

    我设法通过使用同步上传模式使其工作。我的控制器操作如下所示:

    [POST("SaveExcelFile")]
    public FileStreamResult Save(IEnumerable<HttpPostedFileBase> files)
    {
        // The Name of the Upload component is "files"
        if (files != null)
        {
            foreach (var file in files)
            {
                // Some browsers send file names with full path.
                // We are only interested in the file name.
                var fileName = Path.GetFileName(file.FileName);
                //var physicalPath = Path.Combine(Server.MapPath("~/App_Data"), fileName);
    
                Workbook excel2 = new Workbook(file.InputStream);
                excel2.Worksheets.Add("TEST");
    
                Stream stream = new MemoryStream();
                excel2.Save(stream, SaveFormat.Excel97To2003);
    
                stream.Position = 0;
    
    
                return File(stream, "application/vnd.ms-excel", "junk.xls");
                // The files are not actually saved in this demo
                // file.SaveAs(physicalPath);
            }
        }
    
        // Return an empty string to signify success
        return null;
    
    }
    

    这只是概念验证代码,但您可以了解我试图实现的目标。上传文件,对其进行操作,然后将修改后的 Worksheet 作为流发送回客户端。

    【讨论】:

    • 如何在客户端发送文件?我的服务器端代码看起来像你的,但我的IEnumerable&lt;HttpPostedFileBase&gt; files 始终为空。我也在使用剑道,但我不知道如何发送文件。
    【解决方案2】:

    我不认为你可以。我用过KendoUI的上传控件,看来只有在服务器端写入文件后才能操作。

    您可以做的是首先保存文件,执行修改,然后覆盖它。

    【讨论】:

    • 上传后我设法修改了 Excel,但没有保存到磁盘。使用 Aspose,您可以从文件流在内存中创建 Excel 工作表。我的问题是从 Kendo Upload 调用的同一操作中返回修改后的文件。
    • 将视图返回到View?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    相关资源
    最近更新 更多