2011-01-22 24 views
6

Birisi, bir UIImage nesnesini yüklemek için Objective-c'deki ASIHTTPRequest nesnesini nasıl kullanabileceğimi söyleyebilir mi? Bir NSData nesnesine dönüştürmem gerekiyor mu?ASIHTTP: UIImage'ı yükle?

(Bu avatar yükleme url içindir)

E.g. 

UIImage *toUpload = [UIImage imageNamed:@"test.jpg"] 

URL: "http://www.example.com/api/users/avatar/upload?access_token=12345" 
RequestType: PUT 

cevap

14

İşte da verilen maksimum boyutu

//Compress the image 
CGFloat compression = 0.9f; 
CGFloat maxCompression = 0.1f; 
int maxFileSize = 250*1024; 

NSData *imageData = UIImageJPEGRepresentation(yourImage, compression); 

while ([imageData length] > maxFileSize && compression > maxCompression) 
{ 
    compression -= 0.1; 
    imageData = UIImageJPEGRepresentation(yourImage, compression); 
} 

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:whereYourServerEndPointIs.com]]; 

[request addData:imageData withFileName:@"someFileName.jpeg" andContentType:@"image/jpeg" forKey:@"uploadedImage"]; 
+0

Güzel cevap görüntüyü sıkıştırmak için çalışacağını ASIFormRequest kullanan bir örnek. C# ile çalışıyorum bir proje için işaretlenmiş bu var # –

+0

Büyük cevap. While döngü tasarımı gerçekten yararlıdır. –

+0

'addData' üzerinde' setData' kullanmak için herhangi bir sebep var mı? – Tim