загрузка файлов с использованием веб-интерфейса - PullRequest
0 голосов
/ 13 марта 2011

Можно ли в моем приложении загрузить файлы, реализующие веб-интерфейс iphone? Если да, где будут храниться файлы и как я могу получить к ним доступ?

Ответы [ 2 ]

1 голос
/ 13 марта 2011

На самом деле вы не можете загружать файлы, просто просматривая их, но вы можете использовать

  • (BOOL) webView: (UIWebView *) webView shouldStartLoadWithRequest: (NSURLRequest *) request navigationType:(UIWebViewNavigationType) navigationType

для анализа ссылки на файл (скажем, глядя на расширение последнего компонента пути), и если вы хотите, чтобы файл такого типа загружался, вы можете использовать [NSURLConnection connectionWithRequest: myURLRequest делегат: self];и все связанные с ним методы делегатов для загрузки и сохранения файла в папке документов.

0 голосов
/ 04 октября 2012

Если вы хотите визуализировать некоторые известные для файла webview, они будут отображаться автоматически ... но если страница вернет неизвестный для файла webview (это случилось со мной в файле Citrix ica), webview выдаст вам ошибку .. ... чтобы решить эту проблему, я использовал этот код (обратите внимание, что здесь я позволю загружать только файл ica, но вы можете изменить это условие):

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{

if([error code]!=102)
{       [self.lblError setText:[NSString stringWithFormat:@"%@",error]];
        return;
    }

NSDictionary *userInfo = [error userInfo];
NSString * url = [[NSString alloc] initWithFormat:@"%@",[userInfo objectForKey:@"NSErrorFailingURLKey"] ];


NSString *search = @"?";
NSRange result = [url rangeOfString:search];
NSInteger startingPosition;
NSString *fileName,*fileExtention,*fileLocation;
if (result.location != NSNotFound) {
    startingPosition = result.location + result.length;
    fileLocation = [url substringToIndex:result.location];
    fileExtention=[fileLocation pathExtension];
}
else
{
    fileLocation=url;
}

fileName = [fileLocation lastPathComponent];
fileExtention=[fileLocation pathExtension];

//check if file to download if ica file
if(![fileExtention isEqualToString:@"ica"])
    return;

self.lblError.textColor=[UIColor blackColor];
self.lblError.text=[NSString stringWithFormat:@"downloading %@...",fileName];

NSURL * _url = [[NSURL alloc] initWithString:url];


// Get file online
NSData *fileOnline = [[NSData alloc] initWithContentsOfURL:_url];

// Write file to the Documents directory
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
if (!documentsDirectory) {
   // NSLog(@"Documents directory not found!");
    return;
}
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];

//NSLog(@"appFile path: %@",appFile);
[fileOnline writeToFile:appFile atomically:YES];

NSURL* aUrl = [NSURL fileURLWithPath:appFile];

self.interactionController = [UIDocumentInteractionController interactionControllerWithURL: aUrl];
self.interactionController.delegate = self;
self.lblError.text=[NSString stringWithFormat:@"%@ downloaded",fileName];
[self.interactionController presentOpenInMenuFromRect:self.lblError.frame inView:self.view animated:YES];

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...