0
我很難過。嘗試使用NSURLConnection發佈到php腳本。在這一整個下午,我想現在是時候尋求幫助。我已經閱讀了很多帖子,這裏@ NSURLConnection,但我仍然沒有想出我的錯誤。難倒:NSURLConnection + php - 鍵/值格式問題
我上傳了一個圖像,有兩個鍵/值對:userfile
和user
。我正在使用的ObjC代碼如下。日誌輸出顯示字符串(跳過圖像數據)。我使用底部的php腳本在瀏覽器中測試我的服務器端php:它工作正常。所以我以某種方式搞砸了ObjC代碼。
任何人看到我錯了?
//日誌輸出
----------------------------- 14737809831466499882746641449
內容 - 處置:表單數據;
userfile的= someImage &用戶=睏倦;
內容類型:應用/八位字節流
// objC
NSData *imageData = UIImageJPEGRepresentation(img, .5);
NSString *urlString = @"http://example.com/loader.php";
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; \r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
NSString * user = @"sleepy";
[body appendData:[[NSString stringWithString:@"userfile=someImage"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"&user=%@;\r\n", user] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
NSString * testOutput = [[NSString alloc] initWithData:body encoding:NSUTF8StringEncoding];
NSLog(testOutput); // log it
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
// setting the body of the post to the reqeust
[request setHTTPBody:body];
// now lets make the connection to the web
[NSURLConnection
sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSLog(@"Response: %@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
[self.navigationController popToRootViewControllerAnimated:YES];
}];
//瀏覽器
<?php
$directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']);
$uploadHandler = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'cuploader.php';
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<title>Upload form</title>
</head>
<body>
<form id="Upload" action="<?php echo $uploadHandler ?>" enctype="multipart/form-data" method="post">
<h1>
Test
</h1>
<p>
<label for="userfile">File to upload:</label>
<input id="userfile" type="text" name="userfile">
</p>
<p>
<label for="user">User</label>
<input id="user" type="text" name="user">
</p>
<p>
<label for="submit">Press to...</label>
<input id="submit" type="submit" name="submit" value="Upload me!">
</p>
</form>
</body>
</html>
謝謝 - 我會試試看。 – 2012-03-17 04:49:51