iOS,ios9
UIWebView是IOS內建的瀏覽器,可以瀏覽網頁,開啟文檔 html/htm pdf docx txt等格式的檔案。 safari瀏覽器就是通過UIWebView做的。
伺服器將MIME的標識符等放入傳送的資料中告訴瀏覽器使用那種外掛程式讀取相關檔案。
uiwebview載入各種本地檔案(通過loadData方法):
- (void)viewDidLoad
{
[super viewDidLoad];
[self setupUI];
NSString *path = [[NSBundle mainBundle] pathForResource:@"關於.docx" ofType:nil];
NSURL *url = [NSURL fileURLWithPath:path];
NSLog(@"%@", [self mimeType:url]);
//webview載入本地檔案,可以使用載入資料的方式
//第一個誒參數是一個NSData, 本地檔案對應的資料
//第二個參數是MIMEType
//第三個參數是編碼格式
//相對位址,一般載入本地檔案不使用,可以在指定的baseURL中尋找相關檔案。
//以位元據的形式載入沙箱中的檔案,
NSData *data = [NSData dataWithContentsOfFile:path];
[self.webView loadData:data MIMEType:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document" textEncodingName:@"UTF-8" baseURL:nil];
}
#pragma mark 載入docx檔案
- (void)loadDOCX
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"關於.docx" ofType:nil];
NSURL *url = [NSURL fileURLWithPath:path];
NSLog(@"%@", [self mimeType:url]);
NSData *data = [NSData dataWithContentsOfFile:path];
[self.webView loadData:data MIMEType:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document" textEncodingName:@"UTF-8" baseURL:nil];}
#pragma mark 載入pdf檔案
- (void)loadPDF
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"iOS6Cookbook.pdf" ofType:nil];
NSURL *url = [NSURL fileURLWithPath:path];
NSLog(@"%@", [self mimeType:url]);
NSData *data = [NSData dataWithContentsOfFile:path];
[self.webView loadData:data MIMEType:@"application/pdf" textEncodingName:@"UTF-8" baseURL:nil];
}
#pragma mark 載入本地文字檔
- (void)loadText
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"關於.txt" ofType:nil];
NSURL *url = [NSURL fileURLWithPath:path];
NSLog(@"%@", [self mimeType:url]);
NSData *data = [NSData dataWithContentsOfFile:path];
[self.webView loadData:data MIMEType:@"text/plain" textEncodingName:@"UTF-8" baseURL:nil];
}
#pragma mark 載入本地html檔案
- (void)loadHTML
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"demo.html" ofType:nil];
NSURL *url = [NSURL fileURLWithPath:path];
NSLog(@"%@", [self mimeType:url]);
NSData *data = [NSData dataWithContentsOfFile:path];
[self.webView loadData:data MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:nil];
}
#pragma mark 擷取指定URL的MIMEType類型
- (NSString *)mimeType:(NSURL *)url
{
//1NSURLRequest
NSURLRequest *request = [NSURLRequest requestWithURL:url];
//2NSURLConnection
//3 在NSURLResponse裡,伺服器告訴瀏覽器用什麼方式開啟檔案。
//使用同步方法後去MIMEType
NSURLResponse *response = nil;
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
return response.MIMEType;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self setupUI];
//載入路徑的第一個方式
// NSString *path = [[NSBundle mainBundle] pathForResource:@"關於.docx" ofType:nil];
// NSURL *url = [NSURL fileURLWithPath:path];
//載入路徑的第二個方式
NSURL *url = [[NSBundle mainBundle] URLForResource:@"iOS6Cookbook.pdf" withExtension:nil];
//uiwebview負載檔案的第二個方式。第一個方式在下面的注釋中。
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
//NSLog(@"%@", [self mimeType:url]);
//webview載入本地檔案,可以使用載入資料的方式
//第一個誒參數是一個NSData, 本地檔案對應的資料
//第二個參數是MIMEType
//第三個參數是編碼格式
//相對位址,一般載入本地檔案不使用,可以在指定的baseURL中尋找相關檔案。
//以位元據的形式載入沙箱中的檔案,
// NSData *data = [NSData dataWithContentsOfFile:path];
//
// [self.webView loadData:data MIMEType:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document" textEncodingName:@"UTF-8" baseURL:nil];
}
UIWebView載入內容的三種方式:
1 載入本機資料檔案
指定檔案的MIMEType
編碼格式使用@“UTF-8”
2載入html字串(可以載入全部或者部分html檔案)
3載入NSURLRequest檔案(前兩步與NSURLConnect相同)