【问题标题】:NSURLConnection Unable to http post large fileNSURLConnection 无法 http 发布大文件
【发布时间】:2012-10-18 09:54:21
【问题描述】:

我们正在尝试在我们的应用程序中添加功能,以允许它向我们的 Web 服务发布一个大约 50kb 的大文件,该文件本身是一个 HTML 模板,但是通过下面的代码,我们发现数据似乎当网络服务保存它时被切断。

Web 服务目前旨在检查 $_POST['html'] 变量并将其写入文件。

有没有更好的方法来做到这一点,有人知道为什么上传不完整吗?

谢谢亚伦

   NSString *myText;
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"template" ofType:@"htm"];  
    if (filePath) {  
        myText = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; 
    } 

    NSURL *URL = [NSURL URLWithString:@"http://mywebsiteurl.com/receiveData.php"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
    request.HTTPMethod = @"POST";
    NSString *params = [NSString stringWithFormat:@"html=%@", myText];

    NSData *data = [params dataUsingEncoding:NSASCIIStringEncoding];
    [request addValue:@"8bit" forHTTPHeaderField:@"Content-Transfer-Encoding"];
    [request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request addValue:[NSString stringWithFormat:@"%i", [data length]] forHTTPHeaderField:@"Content-Length"];    
    [NSURLConnection connectionWithRequest:[request autorelease] delegate:self];

【问题讨论】:

    标签: objective-c ios post nsurlconnection nsurl


    【解决方案1】:

    我认为这是因为您的服务器设置了发布限制。请检查您的服务器端有关发布数据限制的设置。

    【讨论】:

    • 嗨,我不认为这是我实际上在另一台服务器上创建了一个 PHP 脚本的问题,该脚本将相同的 HTML 文件发布到此 Web 服务而没有任何问题。
    • 我还检查了 PHP.INI,最大帖子大小为 8M
    • 也许您可以尝试使用 multipart/form-data 直接发布文件。
    • 这里的解决方案是什么?
    • 我在下面留下我的答案,因为这里的字符是有限的。@PsychoDad
    【解决方案2】:

    当我重新检查这个问题时,我想也许我发现了问题所在。当我做HTTP post时,我通常不会自己设置content-length。我只是将我的帖子数据编码为key=value&.. 表单并使用[NSMutableURLRequest setHTTPBody:data] 方法将数据添加到NSMutableURLRequest。我认为它会为您完成剩下的工作,包括为您设置内容长度。虽然我对HTTP协议不是很熟悉,但我觉得content-length可能代表了整个post数据的长度,但是这里你将content-length的值设置为键值数据长度的长度。

    【讨论】:

      猜你喜欢
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多