【问题标题】:upload plist file on server in iphone在iphone的服务器上上传plist文件
【发布时间】:2010-10-21 08:40:17
【问题描述】:

我创建了一个 plist 文件,而不是存在的默认文件。 我可以把这个 plist 文件上传到服务器上吗

我尝试了 ASIFormDataRequest。 我能够上传图像和文本文件,但是当我使用 plist 尝试它时,它会在以粗体显示的点抛出错误:

代码:

networkQueue = [[ASINetworkQueue queue] retain];

NSString *filePath = [[[NSBundle mainBundle] 
resourcePath] stringByAppendingPathComponent:
[@"test" stringByAppendingString:@".plist"]];

ASIFormDataRequest *request =[ASIFormDataRequest 
requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ignore"]];

[request setPostValue:@"my_test" forKey:@"share_test"];


[request setFile:filePath 
withFileName:[test stringByAppendingString:
@".plist"] andContentType:@"propertylist/plist" forKey:@"mytest"];

[request setDelegate:self];
[request setDidFailSelector:@selector(requestFailed:)];
[request setDidFinishSelector:@selector(gotTheResponse:)];

[networkQueue addOperation: request];

[networkQueue go];

真的有可能吗? 还是我应该继续使用 xml 虽然plist也是xml格式

但我还是想知道,我该怎么办?

【问题讨论】:

  • 它会抛出什么错误?您似乎缺少将 plist 保存到光盘的代码?为什么要用下划线替换文件系统路径中的空格?
  • *** 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'*** -[ASINetworkQueue addOperation:]:操作已完成,无法入队
  • 在[networkQueue addOperation:request]处弹出上述错误

标签: iphone objective-c ios4 asihttprequest


【解决方案1】:
networkQueue = [[ASINetworkQueue queue] retain];

[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];       
dateString = [formatter stringFromDate:[NSDate date]];

[formatter release];

// hyphen(-) joins file name with the timestamp for uniqueness

NSString *theme_name1 = [[[theme_name stringByAppendingString:@"-"] 
                stringByAppendingString:dateString] 
                stringByReplacingOccurrencesOfString:@" "  withString:@"_" ];



NSArray *paths =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                      NSUserDomainMask, YES);


NSString *documentsPath = [paths objectAtIndex:0]; 
NSString *path = [documentsPath stringByAppendingPathComponent:
                    [file_name stringByAppendingString:@".plist"]];
id plist = [[NSDictionary alloc] initWithContentsOfFile:path];



NSData *xmlData = [NSPropertyListSerialization dataFromPropertyList:plist 
                    format:NSPropertyListXMLFormat_v1_0 errorDescription:nil];
NSString *xml_string = [[NSString alloc] initWithData:xmlData 
                                         encoding:NSUTF8StringEncoding];


NSURL *url = [NSURL URLWithString:@"myurl"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"file_name1 forKey:@"filename"];
[request setPostValue:@"user" forKey:@"sharedby"];
[request setPostValue:xml_string forKey:@"data"];
[request setUsername:@"hello"];
[request setPassword:@"world"];
[request setDelegate:self];
[request setDidFailSelector:@selector(requestFailed:)];
[request setDidFinishSelector:@selector(gotTheResponse:)];
[networkQueue addOperation:request];
[networkQueue go];

【讨论】:

    【解决方案2】:

    我让我的工作。希望这对某人有帮助:)

    NSString *filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:
    [@"test" stringByAppendingString:@".plist"]];
    NSDictionary *plist = [[NSDictionary alloc] initWithContentsOfFile:path];
    NSData *data = [NSPropertyListSerialization dataFromPropertyList:plist format:NSPropertyListXMLFormat_v1_0 errorDescription:nil];
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"yourUrl"]];
    [request addData:data withFileName:@"test.plist" andContentType:@"propertylist/plist" forKey:@"file"];
    [request setDelegate:self];
    [request startAsynchronous];
    

    【讨论】:

      【解决方案3】:

      如果您认为上述代码的 xml 和文本文件是正确的,那么最可能的解释似乎是 plist 文件的路径不正确,或者文件权限不允许该文件阅读。

      您可以在 ASIHTTPRequestConfig.h 中启用调试,这可能会揭示更多关于正在发生的事情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-18
        • 2011-01-06
        • 2011-07-21
        • 1970-01-01
        • 1970-01-01
        • 2020-11-13
        • 1970-01-01
        相关资源
        最近更新 更多