繁体   English   中英

从应用程序将图像数据发送到网页

[英]Send image data to web page from app

我正在创建一个需要将图像发送到Web服务作为其个人资料图片的应用程序,尽管我发现您无法直接通过url发送base64代码,因为它会使url太大,我想知道是否除了使用网址列之外,还有一种方法可以做到这一点。 加载之前,此数据需要在站点上,以便php可以完成其工作并为其创建文件,然后再将数据添加到数据库中。

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

我愿意做任何建议

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

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) {}];

由于您指出您正在使用Web服务,因此我看不到需要通过URL传输图片。 例如,如果您使用的是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应用上传图片,然后加载使用该图片的页面吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM