Проблема в NSData в скачивании - PullRequest
0 голосов
/ 16 сентября 2011

у меня есть один файл с именем 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];

если я удаляю пробелы в имени файла, а также в строке, то он работает правильно. скажите мне 1 вещь, которую можно скачать с пробелами между именами файлов.

Ответы [ 3 ]

2 голосов
/ 16 сентября 2011

Вам необходимо закодировать 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 голосов
/ 16 сентября 2011

Замените пробел на «% 20» или используйте более общий stringByAddingPercentEscapesUsingEncoding метод NSString.

0 голосов
/ 16 сентября 2011

URL не должны содержать пробелов.Замените пробелом на «% 20»:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...