[英]data from base64 url
我有一个网址,格式为
foo://?data:application/x-foo;base64,OjAyMDAwMDA0MDAwMEZBDQo6MTAwMDA...
现在需要将base64数据提取到Data
对象中。
不幸的是,似乎Data
对象还不支持此功能
let data = try Data(contentsOf: url)
尝试返回NSURLConnection finished with error - code -1002
返回NSURLConnection finished with error - code -1002
。
尽管我可以手动解码URL,但我想知道是否缺少一种简单的标准方法。 你会怎么做?
您必须将URL的base64编码部分与其他部分分开,对其进行解码,然后将原始非编码部分与解码部分结合在一起并从那里获取数据。
extension URL {
init?(partialBase64Url: String){
guard let base64part = base64Url.components(separatedBy: "base64,").last, let base64Data = Data(base64Encoded: base64part), let decodedString = String(data: base64Data, encoding: .utf8) else {
return nil
}
let decodedUrl = base64Url.components(separatedBy: "base64,").dropLast().joined() + decodedString
self.init(string: decodedUrl)
}
}
let decodedUrl = URL(partialBase64Url: "foo://?data:application/x-foo;base64,dGVzdFVybFN0cmluZw==")
的值decodedUrl
: "foo://?data:application/x-foo;testUrlString"
如所预期的,因为dGVzdFVybFN0cmluZw==
是的base64编码值testUrlString
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.