Revision: 29556 http://sourceforge.net/p/bibdesk/svn/29556 Author: hofman Date: 2025-09-08 15:32:17 +0000 (Mon, 08 Sep 2025) Log Message: ----------- support encoded suggested filename from content-disposition header
Modified Paths: -------------- trunk/bibdesk/BDSKDownloadManager.m trunk/bibdesk/BDSKDownloader.m Modified: trunk/bibdesk/BDSKDownloadManager.m =================================================================== --- trunk/bibdesk/BDSKDownloadManager.m 2025-09-08 15:01:11 UTC (rev 29555) +++ trunk/bibdesk/BDSKDownloadManager.m 2025-09-08 15:32:17 UTC (rev 29556) @@ -363,7 +363,11 @@ NSString *filename = [[webDownload response] suggestedFilename]; NSString *disposition = [[download request] valueForHTTPHeaderField:@"Content-Disposition"]; - if ([disposition hasPrefix:@"attachment; filename="]) { + if ([disposition hasPrefix:@"attachment; filename*=UTF-8''"]) { + disposition = [disposition substringFromIndex:29]; + if ([disposition length]) + filename = [disposition stringByRemovingPercentEncoding]; + } else if ([disposition hasPrefix:@"attachment; filename="]) { disposition = [disposition substringFromIndex:21]; if ([disposition hasPrefix:@"\""] && [disposition hasSuffix:@"\""]) disposition = [disposition substringWithRange:NSMakeRange(1, [disposition length] - 2)]; Modified: trunk/bibdesk/BDSKDownloader.m =================================================================== --- trunk/bibdesk/BDSKDownloader.m 2025-09-08 15:01:11 UTC (rev 29555) +++ trunk/bibdesk/BDSKDownloader.m 2025-09-08 15:32:17 UTC (rev 29556) @@ -155,18 +155,22 @@ - (void)URLSession:(NSURLSession *)aSession downloadTask:(NSURLSessionDownloadTask *)task didFinishDownloadingToURL:(NSURL *)location { BDSKDownload *download = [self downloadForTask:task]; - NSString *suggestedFileName = [[task response] suggestedFilename] ?: [location lastPathComponent]; + NSString *filename = [[task response] suggestedFilename] ?: [location lastPathComponent]; NSString *disposition = [[task originalRequest] valueForHTTPHeaderField:@"Content-Disposition"]; - if ([disposition hasPrefix:@"attachment; filename="]) { + if ([disposition hasPrefix:@"attachment; filename*=UTF-8''"]) { + disposition = [disposition substringFromIndex:29]; + if ([disposition length]) + filename = [disposition stringByRemovingPercentEncoding]; + } else if ([disposition hasPrefix:@"attachment; filename="]) { disposition = [disposition substringFromIndex:21]; if ([disposition hasPrefix:@"\""] && [disposition hasSuffix:@"\""]) disposition = [disposition substringWithRange:NSMakeRange(1, [disposition length] - 2)]; if ([disposition length]) - suggestedFileName = disposition; + filename = disposition; } - [download _decideDestinationWithSuggestedFilename:suggestedFileName completionHandler:^(NSURL *destinationURL){ + [download _decideDestinationWithSuggestedFilename:filename completionHandler:^(NSURL *destinationURL){ if (destinationURL == nil) { NSError *error = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorCancelled userInfo:nil]; [download _didCompleteWithError:error]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ Bibdesk-commit mailing list Bibdesk-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bibdesk-commit