将图像作为二进制文件发送到服务器

时间:2013-10-15 12:14:54

标签: ios objective-c

以下是我将图像发送到服务器以获取图像信息的属性。

    NSDictionary* parameters = [NSDictionary dictionaryWithObjectsAndKeys:@"en_US", @"image_request[locale]", @"en", @"image_request[language]",[NSURL URLWithString:@"<file url>"], @"image_request[image]", nil];

使用以下代码上传图像:

    NSData *imageData = UIImageJPEGRepresentation(image, 0.1);

但参数是要求我提供网址。有没有办法,只要我拍照并将其上传到服务器并获取该网址并将其附加到参数或任何替代方案中即可找到。我是使用Unirest http库发送请求。

1 个答案:

答案 0 :(得分:2)

为了使用Unirest将使用相机拍摄的图像传输到CamFind API,您需要先将图像相同。

// Get the path to the Documents folder
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectoryPath = [paths objectAtIndex:0];

// Get the path to an file named "tmp_image.jpg" in the Documents folder
NSString *imagePath = [documentDirectoryPath stringByAppendingPathComponent:@"tmp_image.jpg"];
NSURL *imageURL = [NSURL fileURLWithPath:imagePath];

// Write the image to an file called "tmp_image.jpg" in the Documents folder
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
[imageData writeToURL:imageURL atomically:YES];

// Now construct the parameters that will be passed to Unirest
NSDictionary* parameters = [NSDictionary dictionaryWithObjectsAndKeys:@"en_US", @"image_request[locale]", @"en", @"image_request[language]", imageURL, @"image_request[image]", nil];

// And the headers
NSDictionary* headers = [NSDictionary dictionaryWithObjectsAndKeys:@"<mashape-key>", @"X-Mashape-Authorization", nil];

// Call the API using Unirest
HttpJsonResponse* response = [[Unirest post:^(BodyRequest* request) {
    [request setUrl:@"https://camfind.p.mashape.com/image_requests"];
    [request setHeaders:headers];
    [request setParameters:parameters];
}] asJson];
相关问题