从app发送图像数据到网页

时间:2014-04-12 09:40:45

标签: javascript php ios ajax

我正在创建一个应用程序,要求将图像发送到Web服务作为他们的个人资料图片,虽然我发现你不能通过url直接发送base64代码,因为它使得网址过大而且我我想知道除了使用网址栏之外是否有办法做到这一点。这些数据在加载之前需要在网站上,以便php可以在将数据添加到数据库之前完成其工作并为其创建文件。

我想知道你是否可以通过javascript在设备上注入图像,然后通过一个使用ajax将数据发布到另一个php页面的函数捕获javascript来使用

我愿意接受任何有关做什么的建议

2 个答案:

答案 0 :(得分:1)

您可以将图像作为多部分数据发送到服务器,请参阅以下代码:希望有所帮助

NSURL * url=[NSURL URLWithString:[NSString stringWithFormat:@"%@",url_string]];
NSMutableURLRequest *request1 = [NSMutableURLRequest requestWithURL:url];
 [request1 setHTTPMethod:@"POST"];
[request1 setValue:@"application/json" forHTTPHeaderField:@"Accept"];

NSData *imageData = image;
NSString *boundary = @"0xKhTmLbOuNdArY";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request1 addValue:contentType forHTTPHeaderField:@"Content-Type"];
NSMutableData *body = [NSMutableData data];


[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"user_profile[image_attributes][attachment]\"; filename=\"photo.jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

// close form
[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request1 setHTTPBody:body];
[NSURLConnection sendAsynchronousRequest:request1
                                   queue:[NSOperationQueue currentQueue]
                       completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {}];

答案 1 :(得分:0)

由于您指出您使用的是网络服务,因此我不需要通过网址传输图片。例如,如果您使用SOAP,则可以将base64字符串嵌入到XML包络中并发送它。

这是我在项目中使用的一些代码,用于将base64编码的字符串发送到Web服务。

 // build up base64 encode string from image
NSString* image = [UIImageJPEGRepresentation(img, 1.0f) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];

// the call
NSString* envelopeText = CREATE_ENVELOPE_HERE

NSData *envelope = [envelopeText dataUsingEncoding:NSUTF8StringEncoding];

// construct request
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:webServiceUrl]];

[request addValue:@"SOAP_ACTION_HERE" forHTTPHeaderField:@"SOAPAction"];

[request setHTTPMethod:@"POST"];
[request setHTTPBody:envelope];
[request setValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];

[request setValue:[NSString stringWithFormat:@"%d", [envelope length]]forHTTPHeaderField:@"Content-Length"];

// fire away
conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];

if (conn) {
    responseData = [NSMutableData data];
}
else {
    NSLog(@"NSURLConnection initWithRequest: Failed to return a connection.");
}

此外,我必须说我不能正确理解你问题的最后部分。您想通过iOS应用程序上传图片,然后加载使用它的页面吗?