gpt4 book ai didi

ios - 如何从 Dropbox 文件中获取 NSURL?

转载 作者:行者123 更新时间:2023-11-29 13:07:21 25 4
gpt4 key购买 nike

我想使用 QLPreviewController 来预览存储在 Dropbox 中的文件。 QLPreviewController 采用 NSURL,但是 Dropbox DBFile 仅返回 NSFileHandle *NSData * 中的文件内容或NSString *.

QLPreviewController 中预览 Dropbox DBFile 的正确方法是什么?

最佳答案

我正在使用保管箱同步 API。

这是一个将保管箱文件复制到临时目录的片段,从而将 DBFileInfo 项目“转换”为 NSURL。

这个方法:

  • 假设您有一个包含 DBFileInfo 项的self.file NSArray(参见:[[DBFilesystem sharedFilesystem] listFolder:[DBPath root] error:&err];)<
  • 打开并读取信息项作为 NSData
  • 写入具有相同文件名的 tempURL
  • 并返回 tempURL

该片段并不完美,但可以按原样使用。但是,应该使用一些用户信息,例如带有进度微调器的 HUD(下载文件可能需要一段时间)。

- (NSURL*)urlOfDropboxItemAtIndex:(NSUInteger)index {
if(index < self.files.count) {
//[self presentProcessingFileHUD];
__block NSURL *fileURL;

dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
NSError *err;
DBFileInfo *fileInfo = self.files[index];
NSString *tempDir = NSTemporaryDirectory();
NSURL *tempURL = [NSURL fileURLWithPath:[tempDir stringByAppendingPathComponent:@"dropbox-tmp"]];
// create tempURL
NSFileManager *fileManager = [NSFileManager defaultManager];
if(![fileManager fileExistsAtPath:tempURL.path]) {
[fileManager createDirectoryAtURL:tempURL withIntermediateDirectories:YES attributes:nil error:&err];
if(err) {
NSString *errMsg = [NSString stringWithFormat:@"Error creating temp directory at %@", tempURL.path];
NSLog(@"%@",errMsg);
[self presentErrorHUDWithMessage:errMsg];
}
}
fileURL = [tempURL URLByAppendingPathComponent:fileInfo.path.name];
// read dropbox file
DBFile *file = [[DBFilesystem sharedFilesystem] openFile:fileInfo.path error:&err];
if(file && !err) {
NSData *fileData = [file readData:&err];
if(err) { NSLog(@"Error reading data from file %@ (%@)", fileURL.path, err); }
[fileData writeToURL:fileURL atomically:YES];
[file close];
//[self dismissHUD];

} else {
NSString *errStr = [NSString stringWithFormat:@"Error accessing Dropbox file %@ (%@)", fileURL.path, err];
NSLog(@"%@", errStr);
//[self presentErrorHUDWithMessage:errStr];
fileURL = nil;

}
});
return fileURL;

} else {
return nil;
}
}

关于ios - 如何从 Dropbox 文件中获取 NSURL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18269312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com