我有一个名为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];
如果我删除文件名中的空格以及字符串,那么它可以正常工作。 告诉我一件事是可以下载文件名之间的空格。
答案 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
方法。