【问题标题】:Send image data to web page from app从应用程序将图像数据发送到网页
【发布时间】:2014-04-12 09:40:44
【问题描述】:

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

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

我愿意接受任何建议

【问题讨论】:

    标签: javascript php ios ajax


    【解决方案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) {}];
    

    【讨论】:

    • 如何访问我的 php 文件
    • iphone发送的图片将保存在服务器中,文件名与代码中指定的(photo.jpg)一致。
    【解决方案2】:

    由于您指出您正在使用网络服务,因此我认为不需要通过 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 应用上传图片,然后加载使用它的页面吗?

    【讨论】:

    • 如何访问我的 php 文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    相关资源
    最近更新 更多