2013-01-11 37 views
-6

如何從下面的代碼最後一個字符串被置於與圖像如何發送圖像的遠程服務器

的NSString * reqString = [NSString的stringWithFormat發送圖像的遠程服務器:@「http://projeceads.info/spir /productinfo/productadd/%@/%@/%@/%@/%@/%@/%@/%@",ownerId,productNameTxt.text,QuantityTxt.text,sizeTxt.text,ageTxt.text,priceTxt。文本,descriptionView.text,imgstr]; NSURL * reqUrl = [NSURL URLWithString:reqString]; NSURLConnection * connection = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:reqUrl] delegate:self];
[連接開始]; }

+1

請加入更多內容,這樣的問題:這個答案我張貼在這裏的多個已編輯的版本。 –

回答

0

你必須發送NSData的

NSData *attachmentData = UIImagePNGRepresentation(UIImage); 

這不是你可以找到與該 張貼任何問題首先嚐試尋找它在谷歌之前,很多崗位很好的問題。

http://allseeing-i.com/ASIHTTPRequest/How-to-use

3

有兩種方法可以如何將數據上傳到Web服務器:GET或POST

用GET,你必須把你想要的Web服務器有到URL的所有信息。 通過POST,您還可以將信息放入POST正文中。

從你的問題看來,你似乎試圖通過GET請求上傳圖像,並「將圖像追加到URL」。

像這樣的圖像是二進制數據,或者是未壓縮的RGBA值,通常每寬度倍數爲1個字節高度。由於這對於大多數用途來說數據太多,所以人們喜歡壓縮圖像。 UIImagePNGRepresentation允許您以PNG或JPEG格式創建數據。

但即使這種壓縮格式可能無法通過HTTP傳輸,如果您的網絡服務器無法處理二進制數據。因爲您不能使用HTTP中0-255的所有值,而這本身就是純文本格式。歷史上,HTTP僅使用可安全傳輸的7位ASCII字符(0-127)。正因爲如此,任何想要發送到某處的二進制數據都必須編碼爲只使用安全字符的表示形式。最普遍的這種編碼方案是「base64」。

base64編碼的一個缺點是它增加了大約三分之一的發送數據量。大多數現代Web服務器也可以實際接收二進制文章數據。

我在這裏寫了如何通過POST上載圖像到TwitPic。您需要將正確的標題放在一起,然後撰寫郵政正文,如下所示:http://www.cocoanetics.com/2010/02/uploading-uiimages-to-twitpic/

這是我推薦您上傳圖片的方式,如果您的Web服務器支持它。這不是你正在尋找的答案,但它是你應該採取的方法。

現在實際回答你的問題「我如何創建一個包含圖像表示的URL」(因爲我的服務器管理員太笨了,無法構建一個也接受POST的腳本)...

的步驟是:

  1. 創建UIImage的壓縮表示...表示
  2. 的Base64編碼從1
  3. URL編碼的輸出從2
  4. 追加輸出到URL字符串
  5. 發送GET請求

爲BASE64編碼我使用由創建方法着名的馬特加拉格爾:https://github.com/Cocoanetics/DTFoundation/blob/master/Core/Source/NSData%2BBase64.h

URL編碼是必要的,因爲在格式良好的URL中使用的字符甚至比在7位HTTP中合法。對於URL編碼我用這個NSString的類別。 https://github.com/Cocoanetics/DTFoundation/blob/master/Core/Source/NSString%2BDTURLEncoding.h

因此,在總結:儘管這是可能的,你不應該通過GET的URL發送圖像。給他們與正常人一樣的POST請求,並把圖像數據,進入後身體二進制或base64編碼格式。

PS:http://www.cocoanetics.com/2013/01/how-to-send-image-to-remote-server/