Читать файл docx с сервера в WKWebView
Как показать файл.docx, сгенерированный на PHP-сервере, в представлении с веб-представлением?
Если я изменю URL-адрес на https://www.google.ca/, он будет показан в представлении, но при попытке прочитать http://blog.local:4711/api/invoices/69/download пустое место
На консоли, использующей точки останова, я вижу, что она идет в правильную строку.
Используя тот же URL ( http://blog.local:4711/api/invoices/69/download) в любом браузере, я могу загрузить файл.
быстрый код:
import UIKit
import WebKit
class InvoicePreviewViewController: UIViewController {
@IBOutlet weak var preview: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let url = URL(string: "http://blog.local:4711/api/invoices/69/download")
if let unwrappedURL = url {
let request = URLRequest(url: unwrappedURL)
let session = URLSession.shared
let task = session.dataTask(with: request) { (data, response, error) in
if error == nil {
DispatchQueue.main.async {
self.preview.load(request)
}
} else {
print("no")
}
}
task.resume()
}
}
}
Код PHP
...
$filename = $this->filename;
$this->_templateProcessor->saveAs($filename);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $filename);
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($filename));
flush();
readfile($filename);
unlink($filename); // deletes the temporary file
exit;
1 ответ
После того, как Джон Элмор ответил, что это сработало..... НО, я не знаю почему... только после перезапуска Xcode.