Changeset 942
- Timestamp:
- 2008-04-14 19:37:11 (7 months ago)
- Files:
-
- branches/1.0.x/chrome/content/dta/manager.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/1.0.x/chrome/content/dta/manager.js
r909 r942 659 659 } 660 660 if ((header == 'content-type' || header == 'content-disposition') && this.fileName == null) { 661 // we have to handle headers like "content-disposition: inline; filename='dummy.txt'; title='dummy.txt';" 662 var value = aValue.match(/file(?:name)?=(["']?)([^\1;]+)\1(?:;.+)?/i); 663 if (!value) { 664 // workaround for bug #13959 665 // attachments on some vbulletin forums send nasty headers like "content-disposition: inline; filename*=utf-8''file.ext" 666 value = aValue.match(/file(?:name)?\*=(.*)''(.+)/i); 667 if (value) { 668 this.overrideCharset = value[1]; 661 let mhp = Serv('@mozilla.org/network/mime-hdrparam;1', 'nsIMIMEHeaderParam'); 662 let fn; 663 try { 664 fn = mhp.getParameter(aValue, 'filename', '', true, {}); 665 } 666 catch (ex) { 667 // no-op; handled below 668 } 669 if (!fn) { 670 try { 671 fn = mhp.getParameter(aValue, 'name', '', true, {}); 669 672 } 670 } 671 if (value) { 672 this.fileName = value[2].getUsableFileName(); 673 catch (ex) { 674 // no-op; handled below 675 } 676 } 677 if (fn) { 678 this.fileName = fn.getUsableFileName(); 673 679 } 674 680 } … … 2023 2029 newName += '.' + ext; 2024 2030 } 2025 let charset = visitor.overrideCharset ? visitor.overrideCharset : this.url.charset; 2026 d.fileName = DTA_URLhelpers.decodeCharset(newName, charset).getUsableFileName(); 2031 d.fileName = newName.getUsableFileName(); 2027 2032 } 2028 2033
