C# 无法以编程方式下载.eps文件

C# 无法以编程方式下载.eps文件,c#,asp.net,download,eps,C#,Asp.net,Download,Eps,我已经创建了一个代码,用户可以从中下载文件。将下载的文件将仅用于图像文件 我的代码如下 try { System.IO.FileInfo fileInfo = new FileInfo(file.Name); // replace special characters with blank. string filename = GeneralMethods.MakeValidFileName(Path.GetFileNameWithoutExtension(file.Na

我已经创建了一个代码,用户可以从中下载文件。将下载的文件将仅用于图像文件

我的代码如下

try
{
    System.IO.FileInfo fileInfo = new FileInfo(file.Name);
    // replace special characters with blank.
    string filename = GeneralMethods.MakeValidFileName(Path.GetFileNameWithoutExtension(file.Name));
    filename += fileInfo.Extension;
    byte[] obj = (byte[])file.OpenBinary();
    Response.Clear();
    Response.ClearContent();
    Response.ClearHeaders();
    Response.Cache.SetCacheability(System.Web.HttpCacheability.Private);
    Response.AppendHeader("Content-Disposition", "attachment; filename= " + filename);
    Response.ContentType = MimeMapping.GetMimeMapping(filename);
    if (Response.IsClientConnected)
        Response.BinaryWrite(obj);
    Response.Flush();
   // Response.Close();
    HttpContext.Current.ApplicationInstance.CompleteRequest();

}
catch (Exception ex)
{       
}
finally
{

}
当我使用此代码下载.eps文件时,它无法在客户端应用程序中打开该文件


我的代码中缺少什么?

尝试修改此行:

Response.AppendHeader("Content-Disposition", "attachment; filename= " + filename);
看起来像这样:

var cd = new System.Net.Mime.ContentDisposition
{
    FileName = filename,
    Inline = false,
};

Response.AddHeader("Content-Disposition", cd.ToString());

像这样添加内容配置在过去对我很有效。

在尝试了各种代码技巧后,终于找到了答案

我的代码中唯一缺少的是在响应对象中定义内容长度头

因此,代码如下所示:

try
{
    System.IO.FileInfo fileInfo = new FileInfo(file.Name);
    string filename = GeneralMethods.MakeValidFileName(Path.GetFileNameWithoutExtension(file.Name));
    filename += fileInfo.Extension;
    byte[] obj = (byte[])file.OpenBinary();
    Response.Clear();
    Response.ClearContent();
    Response.ClearHeaders();
    Response.Cache.SetCacheability(System.Web.HttpCacheability.Server);
    var cd = new System.Net.Mime.ContentDisposition { FileName = file.Name, Inline=false};
    Response.AppendHeader("Content-Disposition", cd.ToString());
    Response.AppendHeader("Content-Length",obj.Length.ToString());
    Response.ContentType = MimeMapping.GetMimeMapping(filename);                
    if (Response.IsClientConnected)
        Response.BinaryWrite(obj);
    Response.Flush();
   // Response.Close();
    HttpContext.Current.ApplicationInstance.CompleteRequest();
}
catch (Exception ex)
{       
    Response.Redirect(Request.UrlReferrer.ToString());
}
finally
{
}
现在它在我的情况下起作用了…!!!:-

希望这对其他人也有帮助


谢谢

您在应用程序/postscript中给出了行代码,您仔细检查了吗?是的,先生,我检查了。这是一样的。尝试像此应用程序一样给予/eps不确定,但尝试一下。作为旁注,您的案例等同于响应。ContentType=image/+fileInfo.Extension.Remove0。尝试了您建议的代码,但没有帮助..:-@NadeemKhanI按照您的建议更改了代码,但没有帮助