【问题标题】:URL decode in objective-c [closed]Objective-c中的URL解码[关闭]
【发布时间】: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 我将使用该链接。

标签: objective-c ios cocoa-touch


【解决方案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 在这种情况下我该怎么办?还是您有其他选择来提供文件名。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 2010-11-22
  • 1970-01-01
相关资源
最近更新 更多