2011-09-16 66 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