2011-09-16 6 views
0

urlからダウンロードしたときにMy book.doc .butという名前のファイルが1つあります。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]; 

です。 ファイル名の間に空白を入れてダウンロードすることは可能ですか?

答えて

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

私はxmlを作成しました。ファイル名を変更して、サーバーとxmlの両方でファイル名を "My%20book.doc"に変更します。 – triveni

+0

Donサーバー上でそれを変更しないでください。あなたはURLのために使用しているNSStringの中で。使用する前に文字列を続け、% - エンコードしてください。 – Flyingdiver

0

URLには空白を含めないでください。スペースを "%20"に置き換えてください。

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

0

とスペースを交換して、 『20%』、または使用より一般的なstringByAddingPercentEscapesUsingEncodingの方法はNSStringです。

関連する問題