2011-09-16 40 views
0

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

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]; 

如果我在文件名中删除空白,并在字符串,那么它工作正常。 告诉我1件事情是有可能下载与文件名之间的空白。

回答

2

您需要对URL进行编码。空格在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]; 
} 
+0

我必须从server.for这个我下载文件我做的XML所以我改变文件名@ @我的%20book.doc“在服务器和xml。但它不工作 – triveni

+0

唐不要在服务器上改变它,就在你用于URL的NSString中在使用之前,将字符串和%一起编码。 – Flyingdiver

0

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

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

0

与替换空间‘%20’,或使用更通用的stringByAddingPercentEscapesUsingEncoding方法NSString