Changeset 1486


Ignore:
Timestamp:
1/8/2010 2:47:40 AM (5 years ago)
Author:
lowjoel
Message:

Fixed updates which download from the Eraser website (i.e. those of the form download.php?id=X; use the content-disposition header to get a suggested filename so ShellExecute? can do the "right thing."

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eraser6/6.0/Eraser/UpdateForm.cs

    r1360 r1486  
    3333using Eraser.Util; 
    3434using System.Net.Cache; 
     35using System.Net.Mime; 
    3536using System.Globalization; 
    3637 
     
    686687                    using (WebResponse resp = req.GetResponse()) 
    687688                    { 
    688                         byte[] tempBuffer = new byte[16384]; 
     689                        //Check for a suggested filename. 
     690                        ContentDisposition contentDisposition = null; 
     691                        foreach (string header in resp.Headers.AllKeys) 
     692                            if (header.ToLowerInvariant() == "content-disposition") 
     693                                contentDisposition = new ContentDisposition(resp.Headers[header]); 
     694 
    689695                        string tempFilePath = Path.Combine( 
    690696                            tempDir.FullName, string.Format(CultureInfo.InvariantCulture, "{0}-{1}", 
    691                             ++currUpdate, Path.GetFileName(reqUri.GetComponents(UriComponents.Path, 
    692                                 UriFormat.Unescaped)))); 
    693  
     697                            ++currUpdate, 
     698                            contentDisposition == null ? 
     699                                Path.GetFileName(reqUri.GetComponents(UriComponents.Path, 
     700                                UriFormat.Unescaped)) : contentDisposition.FileName)); 
     701 
     702                        byte[] tempBuffer = new byte[16384]; 
    694703                        using (Stream strm = resp.GetResponseStream()) 
    695704                        using (FileStream tempStrm = new FileStream(tempFilePath, FileMode.CreateNew)) 
Note: See TracChangeset for help on using the changeset viewer.