【问题标题】:How to decide if the URL is local file path or Remote file path如何判断 URL 是本地文件路径还是远程文件路径
【发布时间】:2017-05-01 18:51:56
【问题描述】:

我遇到了一种情况,文件可能会上传到服务器,因此路径将类似于 file://some path 以 /somepath .../ 开头,我使用 NSURL urlWithFilePath 将其转换为服务器。

一旦服务器有了文件,我就有一种机制可以下载该内容并获取远程路径,例如 http:// 用于同一文件。

现在的决定是当我点击图像时我想决定全屏打开它,但在此之前必须设备是否应用 [NSURL URLWithString] 或 [NSURL fileURLPath]。

在正确应用打开图像之前,猜猜如何检测到这一点。

【问题讨论】:

  • 您不能拥有指向远程服务器的file: URL。它仅适用于本地文件。
  • 感谢 rmaddy 但这不是我的查询答案,我想在上传或下载此信息时从存储在 DB 中的字符串路径中决定是远程还是本地路径。
  • 如果字符串有方案,使用URLWithString。如果没有,请使用fileURLWithPath
  • 你能举例说明你所说的方案是什么意思吗?
  • http:、file:、ftp:、mailto:、tel:等

标签: ios objective-c url filepath nsfilemanager


【解决方案1】:

添加类别“NSString+URL.m”类

-(NSURL*)url
{
   NSURL *myURL;
 if ([self.lowercaseString hasPrefix:@"http://"] || [self.lowercaseString hasPrefix:@"https://"] || [self.lowercaseString hasPrefix:@"file://"]) {
    myURL = [NSURL URLWithString:self];
}
else 
 {
    //Default consider it file url path 
    myURL = [NSURL fileUrlWithPath:self];
 }
return myURL;
}

【讨论】:

  • 不,这是不正确的。如果它有任何方案(包括file:),则需要使用URLWithString。仅当字符串表示文件路径时才使用 fileURLWithPath。文件路径没有任何 URL 方案。像www.google.com 这样的字符串不是有效的 URL。
  • 文件:????始终是本地文件而不是远程文件。并检查我的问题,我只处理本地文件路径或远程路径 http:// 或 file:// ,您在无效 url 中所说的其他内容只是错误检查条件以避免返回 nil。
  • 如果您有一个字符串,例如file://some/path/to/a/file.txt,那么您必须使用URLWithString: 创建NSURL。如果你有一个字符串,比如/some/path/to/a/file.txt,那么你必须使用fileURLWithPath:
  • 好的明白我会更新我的帖子答案以更好地接受它
  • 如果 url 的方案不是http/https/file,这将失败。对于碰巧以您在那里处理的架构前缀开头的无效 url 字符串,这也会失败。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
  • 2021-06-22
  • 1970-01-01
  • 2010-09-13
  • 2013-08-14
  • 2018-11-04
相关资源
最近更新 更多