我需要正确解析从 Safari 中删除的 GIF 文件。在 Chrome 或 Opera 中很容易做到:
-(BOOL)performDragOperation:(id<NSDraggingInfo>)sender
{
if ([types containsObject:@"CorePasteboardFlavorType 0x75726C20"]) // GIF format
{
NSData* gifData = [pb dataForType:@"CorePasteboardFlavorType 0x75726C20"];
NSString* someName = [self _sanitizeFileNameString:[[NSURL URLFromPasteboard:pb] absoluteString]];
NSString* tempStr = [[MSSettingsManager instance] tmpDir];
NSString* randomFilePath = [NSString stringWithFormat:@"%@/%ld%ld%ld.gif",tempStr,random(),random(),random()];
if (someName)
randomFilePath = [NSString stringWithFormat:@"%@/%@ - %d.gif",tempStr,someName,rand()];
[gifData writeToFile:randomFilePath atomically:YES];
}
}
在 safari 中,PasteBoard 中的所有传入类型都会损坏 GIF 文件。
NSFilesPromisePboardType - 也没有给我任何东西。
if ([[pb types] containsObject:NSFilesPromisePboardType]){
NSURL* newFilePath = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/",[[MSSettingsManager instance] tmpDir]]];
NSArray *filenames = [sender namesOfPromisedFilesDroppedAtDestination:newFilePath];
NSLog(@"%@",filenames); // 0x000...
}
所以,我的任务是 - 如何从 PasteBoard 或没有任何类型的行文件中获取清晰的 GIF 文件。