2012-10-18 36 views
0

我们正在尝试将功能添加到我们的应用程序中,以允许它向我们的Web服务发布大约50kb的大文件,该文件本身是HTML模板,但是代码如下发现数据似乎在Web服务保存时被切断。NSURLConnection无法http发布大文件

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]; 

回答

0

我想这是因为你的服务器设置后limit.Check约后的数据限制您的服务器端的设置。

+0

嗨,我不认为这是我实际上在另一台服务器上创建了一个PHP脚本的问题,该服务器将相同的HTML文件发布到此Web服务中,没有任何问题。 – MonkeyBlue

+0

我也检查了PHP.INI,最大发布大小为8M – MonkeyBlue

+0

也许你可以尝试直接使用multipart/form-data发布文件。 –

0

当我重新检查这个问题时,我想也许我找到了什么问题。当我做HTTP POST时,我通常不会自己设置content-length。我只是将我的发布数据编码为key=value&..表格,并使用[NSMutableURLRequest setHTTPBody:data]方法将数据添加到NSMutableURLRequest。我认为它会为您做剩下的工作,包括为您设置内容长度。尽管我对HTTP协议不是很熟悉,但我认为content-length可能代表整个发布数据的长度,但在此您可以使用键值数据长度的长度来设置content-length值。