下载中的NSData问题

时间:2011-09-16 12:23:28

标签: iphone ipad

我有一个名为My book.doc的文件。但是在从url下载时,NSData显示0个字节。 这是我的代码

   NSString *imagelist = @"http://SomeUrl/My book.doc";
NSData *yourdoceFileData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:imagelist]];
  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *yourFilePath = [documentsDirectory stringByAppendingPathComponent:reString];
[yourdocFileData writeToFile:yourFilePath atomically:YES];

如果我删除文件名中的空格以及字符串,那么它可以正常工作。 告诉我一件事是可以下载文件名之间的空格。

3 个答案:

答案 0 :(得分:2)

您需要对网址进行编码。空格在URL中无效。空格字符为'%20',因此这应该有效:

NSString *imagelist = @"http://SomeUrl/My%20book.doc";

我使用以下函数进行编码:

- (NSString *)urlEncodeValue:(NSString *)str
{
    NSString *result = (NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)str, NULL, CFSTR("?=&+"), kCFStringEncodingUTF8);
    return [result autorelease];
}

答案 1 :(得分:0)

网址不应包含空格。用“%20”代替空格:

NSString * imagelist = @“http://SomeUrl/My%20book.doc”;

答案 2 :(得分:0)

将空格替换为“%20”,或使用stringByAddingPercentEscapesUsingEncoding的更一般的NSString方法。