Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 下载文件时如何设置文件名?_C#_Excel_Asp.net Mvc 4_Azure - Fatal编程技术网

C# 下载文件时如何设置文件名?

C# 下载文件时如何设置文件名?,c#,excel,asp.net-mvc-4,azure,C#,Excel,Asp.net Mvc 4,Azure,我在做MVC4。我使用以下简单代码动态生成了Excel文件。我的主机在Azure上 我创建了一个根路径,然后尝试保存该Excel文件 问题是当myActionResultmethod响应返回时,它给出了打开文件的默认弹出窗口,但文件名有一个GUID,而不是我提供的文件名 Excel文件生成代码: Microsoft.Office.Interop.Excel.Application xlApp= 新的Microsoft.Office.Interop.Excel.Application() temp

我在做MVC4。我使用以下简单代码动态生成了Excel文件。我的主机在Azure上

我创建了一个根路径,然后尝试保存该Excel文件

问题是当my
ActionResult
method响应返回时,它给出了打开文件的默认弹出窗口,但文件名有一个GUID,而不是我提供的文件名

Excel文件生成代码:

Microsoft.Office.Interop.Excel.Application xlApp= 新的Microsoft.Office.Interop.Excel.Application()

tempPath返回的路径类似于
C:\AppData\Local\dftmp\Resources\11a2435c-998c-4fe8-aa55-8bb42455b4ca\directory\DemoFile.xls

下载文件弹出窗口没有提供文件名为
DemoFile
提供一些GUID
为什么

ActionResult
方法代码:

public ActionResult DownloadExcel() {
    string path = ExcelGenerationCode(fileName);
        Stream s = new FileStream(path, FileMode.Open, FileAccess.Read);
        return new FileStreamResult(s, "application/vnd.ms-excel");
    }
还试图给属性命名

public ActionResult DownloadExcel() {
    string path = ExcelGenerationCode(fileName);
        Stream s = new FileStream(path, FileMode.Open, FileAccess.Read);
        return new FileStreamResult(s, "application/vnd.ms-excel")
        {
            FileDownloadName = "myexcelFILE1.xls"
        };
    }
给出文件名参数时出现以下错误。


我有足够的空间和内存。

您应该返回一个新的FileContentResult,并且您的操作必须返回FileResult而不是ActionResult,例如:

public virtual FileResult DownloadFile(long fileId)
{
     string path = ExcelGenerationCode(fileName);
     return File(path, "application/vnd.ms-excel","donwload.xls");
}

显示用于下载文件的操作方法代码。编辑后:无法设置
FileStreamResult
的文件名,请使用。但是你不需要手动实例化一个流,在内部也是这样,所以你需要使用更少的代码。我更新了我的答案。它正在工作吗?请尝试搜索错误。请参阅。在运行此代码之前杀死任务管理器中的所有Excel实例时,是否也会发生这种情况?更新了上述问题中的my
ActionResult
代码请选中“您的操作必须是FileResult”-不正确,
FileResult
继承
ActionResult
,因此后者也可以工作。工作正常,但在打开“microsoft excel无法打开或保存更多文档,因为没有足够的可用内存”时出现此错误/问题是我已经在path变量中传递了文件名,那么为什么它不取我的文件名:/
public virtual FileResult DownloadFile(long fileId)
{
     string path = ExcelGenerationCode(fileName);
     return File(path, "application/vnd.ms-excel","donwload.xls");
}