Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS SDK使用附加数据将照片发布到web服务_Ios_Objective C_Post - Fatal编程技术网

iOS SDK使用附加数据将照片发布到web服务

iOS SDK使用附加数据将照片发布到web服务,ios,objective-c,post,Ios,Objective C,Post,我正在使用以下代码将照片发送到web服务: -(void)uploadPhoto:(UIImage*)image :(NSString*)fileName { NSData *img = UIImageJPEGRepresentation(image, 0.9f); NSString *urlString = @"http://serverURL.com"; NSMutableURLRequest *request= [[NSMutableURLRequest alloc] init];

我正在使用以下代码将照片发送到web服务:

-(void)uploadPhoto:(UIImage*)image :(NSString*)fileName
{

NSData *img = UIImageJPEGRepresentation(image, 0.9f);

NSString *urlString = @"http://serverURL.com";

NSMutableURLRequest *request= [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];

NSString *boundary = @"---------------------------14737809831466499882746641449";

NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];

NSMutableData *postbody = [NSMutableData data];

[postbody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];

[postbody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@.jpg\"\r\n",fileName] dataUsingEncoding:NSUTF8StringEncoding]];

[postbody appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

[postbody appendData:[NSData dataWithData:img]];
[postbody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];

[request setHTTPBody:postbody];

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"%@", returnString);

}
这是很好的工作,我可以从服务器上的照片在PHP

我的问题是,是否可以将其他数据与表单数据一起发送到服务器?我需要发送更多关于照片的详细信息,如用户名和其他一些与应用程序相关的数据

我想知道如何在请求中附加一些附加数据。我尝试将常规的POST数据附加到它,但它不起作用。我假设是因为数据类型

我不知道这是如何工作的,以及是否有办法将更多数据附加到发送到服务器的请求中

这方面的任何帮助都会很好


谢谢

要在服务器上上载图像,最好的方法之一是使用ASIFormDataRequest

可以使用可选的添加API为同一参数发送多个值:

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; [request addPostValue:@"Ben" forKey:@"names"]; [request addPostValue:@"George" forKey:@"names"]; [request addFile:@"/Users/ben/Desktop/ben.jpg" forKey:@"photos"]; [request addData:imageData withFileName:@"george.jpg" andContentType:@"image/jpeg" forKey:@"photos"]; ASIFormDataRequest*请求=[AsiformDataRequestRequestWithURL:url]; [请求addPostValue:@“Ben”forKey:@“names”]; [请求addPostValue:@“George”forKey:@“names”]; [请求添加文件:@”/Users/ben/Desktop/ben.jpg“forKey:@“photos”]; [请求添加数据:图像数据,文件名:@“george.jpg”,内容类型:@“image/jpeg”forKey:@“photos”]; 对于工作代码。如何使用它的一部分

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; [request setUseKeychainPersistence:YES]; //if you have your site secured by .htaccess //[request setUsername:@"login"]; //[request setPassword:@"password"]; NSString *fileName = [NSString stringWithFormat:@"ipodfile%@.jpg",self.fileID]; [request addPostValue:fileName forKey:@"name"]; ASIFormDataRequest*请求=[AsiformDataRequestRequestWithURL:url]; [请求setUseKeychainPersistence:是]; //如果您的站点由.htaccess保护 //[请求设置用户名:@“登录”]; //[请求设置密码:@“密码”]; NSString*文件名=[NSString stringWithFormat:@“ipodfile%@.jpg”,self.fileID]; [请求addPostValue:fileName forKey:@“name”];
为了更好地理解。

只需对文章中的每个变量重复以下几行:

[postbody appendData:[@"Content-Disposition: form-data; name=\"userfile\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

[postbody appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

[postbody appendData:[NSData dataWithData:img]];
[postbody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];

显然,您需要更新第一行中的
名称
值,第二行中的内容类型,第三行中的实际数据。

看起来ASIHTTPResquest不再被积极开发(),似乎是最流行的替代品。您可以使用此库来处理任何类型的web服务:github.com/minespurohit/ServiceCallingUtility