2010-07-01 58 views
1

我正嘗試將圖像文件上傳到http服務器。這裏是代碼片段http文件上傳目標C

NSData *imgData = UIImagePNGRepresentation(img); 

NSString *post = [NSString stringWithFormat:@"&UserID=%@&Query=%@&fileContent=", userID, @"putImage"]; 

NSMutableData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 

[postData appendBytes:[imgData bytes] length:imgData_len]; 

NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]]; 

NSURL *url = [NSURL URLWithString:@"http://ryan.verifyidonline.com/test.php"]; 

NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; 

[theRequest setHTTPMethod:@"POST"]; 

[theRequest setValue:postLength forHTTPHeaderField:@"Content-Length"]; 

[theRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Current-Type"]; 

[theRequest setHTTPBody:postData]; 

NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 

此代碼只發送圖像文件的前幾個字符。我想我必須以某種方式對文件進行編碼,但我沒有嘗試過NSString編碼。

回答

1

http://www.cocoadev.com/index.pl?HTTPFileUpload

祝你好運,它給了我一個有點麻煩,但是基於這裏的東西(你必須通過底部閱讀,固定碼隨着時間的推移被提交)創建一個全新的,可重複使用的方式這樣做不應該拿多少時間。

0

你的代碼沒有這樣的機會。在至少,您需要以某種方式對圖像數據進行編碼,以便fileContent的值中只顯示ASCII字符(然後不是%,&,=和空格)。

但是,要做到這一點,你必須創建一個正確的內容類型等多部分MIME正文。我認爲在Jared的鏈接代碼將工作,但可能有字符集編碼的錯誤。如果你沒有在HTTP中指定一個字符集,則假定ISO-8859-1,但是代碼似乎在全世界都使用UTF-8,而沒有說明字符集是UTF-8。