, setData setFile ? , "setFile" "setData". , .
, .
[request setFile: path withFileName: @ "image.png" andContentType: @ "image / JPEG" forKey: @ "file"];
the content type must be image / png.
to download the image, I use this code:
[networkQueue setUploadProgressDelegate:statusProgressView];
[networkQueue setRequestDidFinishSelector:@selector(imageRequestDidFinish:)];
[networkQueue setQueueDidFinishSelector:@selector(imageQueueDidFinish:)];
[networkQueue setRequestDidFailSelector:@selector(requestDidFail:)];
[networkQueue setShowAccurateProgress:true];
[networkQueue setDelegate:self];
NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:@"myImage.jpg"];
url = [NSURL URLWithString:@"http://myserver/upload.php"];
ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
[request setPostValue:@"myImageName" forKey:@"name"];
[request setFile:imagePath forKey:@"photo"];
[networkQueue addOperation:request];
[networkQueue go];
In addition, if you upload multiple photos at once, use setFile: forKey: instead of setData: forKey :. That way, ASIFormDataRequest will know that you are sending a fair bit of data, and it will transfer the request data from a temporary file to disk, which means that you do not need to store a lot of image data in memory.
source
share