我正在尝试加载以下html文件:
https://dev-attachments-public.clickup.com/d23cdacd-510c-440e-818f-1e0f4d1a10bd/Email.html
进入我的WKWebView,执行以下操作:
let targetURL = NSURL(string: htmlFile)
let webView = WKWebView(frame: paddingView.bounds)
let request = NSURLRequest(url: targetURL as URL)
webView.load(request as URLRequest)
但是,它仅加载代码:
我不确定为什么会这样。我需要在本地下载该文件然后显示吗?
答案 0 :(得分:1)
请注意,在桌面上单击该链接也会导致文件下载,而不是显示在Web浏览器中。查看请求的标头,您的服务器当前正在以Content-Type
的形式发送其application/octet-stream
。这告诉浏览器(例如WKWebView
)该文件是原始数据,应如此下载,显示和处理。相反,您应该将Content-Type
标头发送为text/html
,该标头告诉浏览器它应该呈现HTML并将其显示为网页。此外,您可能应该删除Content-Disposition
标头,以使其成为默认内联显示为网页
答案 1 :(得分:0)
这有效:
var paths: [AnyObject] = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) as [AnyObject]
let filePath: String = "\(paths[0])/\("index.html")"
if let url: NSURL = NSURL(string: htmlFile) {
do {
let urlData: NSData = try NSData(contentsOf: url as URL)
urlData.write(toFile: filePath, atomically: true)
webView.load(URLRequest(url: NSURL.fileURL(withPath: filePath)))
} catch {
print("Error: Could not fetch fetchedResultsController")
}
}