无法从设备上的“文档”目录加载图像
Can not load images from `Documents` directory on device
在模拟器上这有效。
这是我在保存图像时打印的路径:
/var/mobile/Containers/Data/Application/31912F79-EB94-4DB1-84B8-68C7368B9160/Documents/t123t.jpg
这是 html 中的 img 标签,它应该将图像加载到 webView 中(在模拟器上运行良好):
img src="file:///var/mobile/Containers/Data/Application/31912F79-EB94-4DB1-84B8-68C7368B9160/Documents/t123t.jpg">
正如我所见,这里一切正常,我认为问题应该出在路径上,我从 img src
中删除了部分 file://
,但它对我没有帮助。
好的,首先是你提到的路径
/var/mobile/Containers/Data/Application/31912F79-EB94-4DB1-84B8-68C7368B9160/Documents/t123t.jpg
具有随机字符串的文件夹(应用程序内部)总是在重新打开应用程序后发生变化。
Apple 出于安全目的实现了这一点。
let documentDirectory = FileManager.SearchPathDirectory.documentDirectory
let userDomainMask = FileManager.SearchPathDomainMask.userDomainMask
let paths = NSSearchPathForDirectoriesInDomains(documentDirectory, userDomainMask, true).first
let path: String = paths!
//path has address of document directory and we need address of tmp directory where pictures are stored
let imageURL = URL(fileURLWithPath: dirPath).appendingPathComponent("\(url)")
let image = UIImage(contentsOfFile: imageURL.path)
当我遇到同样的问题时,这在我的第一个项目中对我有用。
希望对你有所帮助:)
快乐编码
已解决
出于某种原因,无法通过从字符串加载 html 以这种方式访问 Documents
中的图像。我需要在 Documents
文件夹中创建一个 html file
才能从该文件夹中读取图像。
因此,html 和图像(资源)需要在同一个文件夹中。
无效的代码:
webView.loadHTMLString(html, baseURL: URL(fileURLWithPath: Bundle.main.bundlePath))
//html is a string.
有效代码:
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let documentsDirectory = paths[0]
let filename = documentsDirectory.appendingPathComponent("index.html")
do {
//html is a string
try html.write(to: filename, atomically: true, encoding: String.Encoding.utf8)
} catch {
//...
}
webView.loadFileURL(filename, allowingReadAccessTo: documentsDirectory)
在模拟器上这有效。
这是我在保存图像时打印的路径:
/var/mobile/Containers/Data/Application/31912F79-EB94-4DB1-84B8-68C7368B9160/Documents/t123t.jpg
这是 html 中的 img 标签,它应该将图像加载到 webView 中(在模拟器上运行良好):
img src="file:///var/mobile/Containers/Data/Application/31912F79-EB94-4DB1-84B8-68C7368B9160/Documents/t123t.jpg">
正如我所见,这里一切正常,我认为问题应该出在路径上,我从 img src
中删除了部分 file://
,但它对我没有帮助。
好的,首先是你提到的路径
/var/mobile/Containers/Data/Application/31912F79-EB94-4DB1-84B8-68C7368B9160/Documents/t123t.jpg
具有随机字符串的文件夹(应用程序内部)总是在重新打开应用程序后发生变化。
Apple 出于安全目的实现了这一点。
let documentDirectory = FileManager.SearchPathDirectory.documentDirectory
let userDomainMask = FileManager.SearchPathDomainMask.userDomainMask
let paths = NSSearchPathForDirectoriesInDomains(documentDirectory, userDomainMask, true).first
let path: String = paths!
//path has address of document directory and we need address of tmp directory where pictures are stored
let imageURL = URL(fileURLWithPath: dirPath).appendingPathComponent("\(url)")
let image = UIImage(contentsOfFile: imageURL.path)
当我遇到同样的问题时,这在我的第一个项目中对我有用。
希望对你有所帮助:)
快乐编码
已解决
出于某种原因,无法通过从字符串加载 html 以这种方式访问 Documents
中的图像。我需要在 Documents
文件夹中创建一个 html file
才能从该文件夹中读取图像。
因此,html 和图像(资源)需要在同一个文件夹中。
无效的代码:
webView.loadHTMLString(html, baseURL: URL(fileURLWithPath: Bundle.main.bundlePath))
//html is a string.
有效代码:
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let documentsDirectory = paths[0]
let filename = documentsDirectory.appendingPathComponent("index.html")
do {
//html is a string
try html.write(to: filename, atomically: true, encoding: String.Encoding.utf8)
} catch {
//...
}
webView.loadFileURL(filename, allowingReadAccessTo: documentsDirectory)