2014-12-08 6 views
0

Я создал код, из которого пользователь может загрузить файл. Файлы, которые будут загружены, будут использоваться только для файлов изображений.Невозможно загрузить файл .eps программно

Мой код приведен ниже.

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 файла, используя этот код не может открыть файл в клиентском приложении.

Что мне недостает в моем коде?

+0

вы дали этот код строки как 'приложения/postscript' сделал и дважды проверил его? – BNN

+0

Да, сэр, я проверил его. Это то же самое. –

+0

попробуйте дать это 'application/eps' Не уверен, но дайте ему попробовать – BNN

ответ

0

Попробуйте изменить эту строку:

Response.AppendHeader("Content-Disposition", "attachment; filename= " + filename); 

выглядеть следующим образом:

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

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

Добавление в Content-Disposition, как это работает для меня в прошлом.

+0

Я изменил код согласно вашему предложению, но не помог –

0

После пробовать различные трюки кода, наконец, нашли ответ.

Единственное, что мне не хватало в моем коде, было определение заголовка «Content-Length» в объекте Response.

Так что код согласно ниже:

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 
{ 
} 

Теперь он работает в моем случае ... !!! :-).

Надеется, что это помогает другим тоже ..

Благодаря

Смежные вопросы