我想将数据传递到服务器并将文件存储在数据库中作为二进制数据。
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];
对此有何想法?
谢谢你, 米兰
答案 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)
您应该能够使用对象归档来创建序列化对象,然后将其发送到服务器。