Objective-c中的URL解码[关闭]

Posted

技术标签:

【中文标题】Objective-c中的URL解码[关闭]【英文标题】:URL decode in objective-c [closed] 【发布时间】:2012-09-24 12:04:35 【问题描述】:

我有一个名为 url 的字符串,即

NSString *url = @"http://sound17.mp3pk.com/indian/barfi/%5BSongs.PK%5D%20
              Barfi%20-%2001%20-%20Barfi!.mp3";

现在我正在下载这首歌并保存它,我需要指定文件名。我希望文件名的方式是它应该从 url 中获取文件名本身。就像在这个 url 中一样,它应该采用 %5BSongs.PK%5D%20 Barfi%20-%2001%20-%20Barfi!.mp3 哪个是 url 中的文件名,但不应由 Url 格式化程序组成。

我正在做的是

Dest_path=[NSHomeDirectory() stringByAppendingString:@"/Documents/a3"];

result =[Dest_path stringByAppendingString:@".mp3"];
helper = [DownloadHelper download:url withTargetPath:result withDelegate:self];

【问题讨论】:

你的问题的标题没有多大帮助。用一句话就能说出你想知道的东西是一个很好的练习。 感谢您的建议。请立即查看..了解是否有帮助! @PhillipMills 我将使用该链接。 【参考方案1】:

这样的事情应该可以工作:

NSString *URLString = @"http://sound17.mp3pk.com/indian/barfi/%5BSongs.PK%5D%20Barfi%20-%2001%20-%20Barfi!.mp3";
NSURL *URL = [NSURL URLWithString:url];
NSString *filename = [[[URL path] lastPathComponent] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//=> [Songs.PK] Barfi - 01 - Barfi!.mp3

请注意,如果内容是动态的(例如 http://example.com/getsong?q=foobar 之类的内容),您不能总是从 URL 中获得有用的文件名。

编辑:从任意 URL 获取文件名的更好方法是发出请求并检查响应的 Content-Disposition HTTP header。

【讨论】:

您可能应该注意到有更好的方法来获取文件名,例如HTTP 标头。 @RichardJ.RossIII 你能给我链接或其他一些信息吗? @omz 在这种情况下我该怎么办?还是您有其他选择来提供文件名。

以上是关于Objective-c中的URL解码[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

objective-c 解码

将 Objective-C / iOS 字符串转换为 URL 的正确语法是啥? [关闭]

在 Objective-C 中建立一个 URL [关闭]

获取用于保存在objective-c中的最后一个目录的路径[关闭]

Objective-C:来自 jquery 回调的 json 响应

如何在同一框架内访问 Objective-C 中的内部 Swift 类?