2011-01-22 27 views
6

Có thể ai đó vui lòng cho tôi biết cách tôi có thể sử dụng đối tượng ASIHTTPRequest trong Objective-c để tải lên đối tượng UIImage không? Tôi có cần phải chuyển đổi nó sang một đối tượng NSData không?ASIHTTP: Tải lên UIImage?

(Đây là một url upload avatar)

E.g. 

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

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

Trả lời

14

Heres một ví dụ sử dụng ASIFormRequest đó cũng sẽ cố gắng để nén các hình ảnh để đưa ra kích thước tối đa

//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

Great câu trả lời. Tôi đã đánh dấu trang này cho một dự án mà tôi đang làm việc với C# –

+0

Câu trả lời hay. Thiết kế vòng lặp while thực sự hữu ích. –

+0

Bất kỳ lý do nào để sử dụng 'addData' trên' setData'? – Tim

Các vấn đề liên quan