• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iPhone PLIST 文件上传二进制文件

[复制链接]
菜鸟教程小白 发表于 2022-12-13 07:00:24 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个内置在 Objective C 中的 iPhone 应用程序,它可以将 PLIST 文件从 iPhone 上传到服务器。大多数时候它工作得很好,但有时文件看起来像这样

bplist00Ú .....

我发现这显然是一个二进制 PLIST,但我不知道为什么会发生这种情况。

有什么想法吗?

NSString *path = [[NSHomeDirectory() stringByAppendingPathComponent"Documents"] stringByAppendingPathComponent:fileName];
NSData *data = [[NSData alloc] initWithContentsOfFile:path]; 

// Location ID doesn't seem to be correct here - always 0?
NSMutableString *urlString = [NSMutableString string];
[urlString appendString:[NSString stringWithFormat"http://www.website.com/app/iphone/submitjob/upload?jid=%i&mid=%@&lid=%i", delegate.jobInProgress.jobID, delegate.memberID, [[delegate.jobInProgress.plist objectForKey"locationID"] intValue]]];

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod"OST"];

NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat"multipart/form-data; boundary=%@", boundary];

[request addValue:contentType forHTTPHeaderField: @"Content-Type"];

NSMutableData *postbody = [NSMutableData data];
[postbody appendData:[[NSString stringWithFormat"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithFormat"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@\"\r\n", fileName] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithString"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[NSData dataWithData:data]];
[postbody appendData:[[NSString stringWithFormat"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:postbody];

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
returnString = [returnString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];



Best Answer-推荐答案


您要上传 bundle 中的现有 .plist 吗?因为项目中的所有 .plist 都转换为二进制格式。我会使用 CFPropertyListWrite 创建您从头开始上传到服务器的任何 .plist并将格式设置为 kCFPropertyListXMLFormat_v1_0。然后将生成的文件上传到您的服务器。这样一来,您就不会依赖包中的格式。

关于iPhone PLIST 文件上传二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5412337/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap