iPhone:如何在XML中嵌入NSData以上传到服务器?

时间:2010-03-19 13:27:20

标签: iphone nsdata

我想将数据传递到服务器并将文件存储在数据库中作为二进制数据。

NSData *myData = [NSData dataWithContentsOfFile:pathDoc]; 
pathDoc = [NSString stringWithFormat:@"<size>%d</size><type>%d</type><cdate>%@</cdate><file>%c</file><fname>File</fname>",fileSizeVal,filetype,creationDate,myData];

对此有何想法?

谢谢你, 米兰

3 个答案:

答案 0 :(得分:1)

这段代码毫无意义。

您创建一个带有文件路径的NSData对象,然后转向并重新分配给表示一大块XML的字符串var。它非常混乱,可能会导致错误。不要以这种方式重用变量。

在任何情况下,要将数据编码为字符串,请使用NSString:

- (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding

然后只需在任意位置插入该字符串即可。

编辑:

  

您好,抱歉我不知道该怎么做   使用这个 - (id)initWithData :( NSData   *)数据编码:(NSStringEncoding)编码   我的代码。

像这样:(抱歉格式化Stackoverflow的编辑器今天似乎正在眨眼)

NSData *myData = [NSData dataWithContentsOfFile:pathDoc]; 
NSString *myDataString = [[NSString alloc] initWithData:myData encoding:NSUnicodeStringEncoding];
NSString *formatString = @"<size>%d</size><type>%d</type><cdate>%@</cdate><file>%c</file><fname>File</fname><data>%@</data>";
pathDoc = [NSString stringWithFormat:formatString,fileSizeVal,filetype,creationDate,myDataString];

NSUnicodeStringEncoding是定义各种字符串编码的几个常量之一。请参阅NSString类引用。您使用哪一个取决于您的服务器期望。

祝你好运。

答案 1 :(得分:1)

在XML文档中嵌入二进制数据的最常用方法是将数据编码为ASCII。例如,使用Base64。

答案 2 :(得分:0)

您应该能够使用对象归档来创建序列化对象,然后将其发送到服务器。