无法以编程方式下载.eps文件
本文关键字:下载 eps 文件 方式 编程 | 更新日期: 2023-09-27 18:33:34
我创建了一个代码,用户可以从中下载文件。将下载的文件将仅用于图像文件。
我的代码如下。
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
{
}
现在它在我的情况下工作... !! :-)。
希望这也对其他人有所帮助。
谢谢