-1

我有一个名为 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];
4

1 回答 1

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 标头

于 2012-09-24T12:11:02.520 回答