Objective-C(将单个图像上传到服务器)

时间:2014-07-08 05:23:15

标签: ios objective-c

所有

我只想将我的应用程序中的单个屏幕截图上传到服务器目录。截图代码很好,因为我可以在另一个例程中通过短信发送它并且编译得很好,但我没有使用下面的代码在服务器目录中看到图像。

我无法让它发挥作用。我只关心上传screenshotimage变量......剩下的数据对我来说并不重要。请帮助!!!

- (IBAction)sendToServer {
    UIGraphicsBeginImageContext(self.view.bounds.size);
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *screenshotimage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    NSData *imageData = UIImageJPEGRepresentation(screenshotimage,0.2);
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://www.nameofmywebsite.com/temp/image_from_payer_app"]];

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

    NSMutableData *body = [NSMutableData data];

    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[@"Content-Disposition: form-data; name=\"userfile\"; filename=\"iphoneimage.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[NSData dataWithData:imageData]];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];

    [request setHTTPBody:body];
    [request addValue:[NSString stringWithFormat:@"%lu", (unsigned long)[imageData length]] forHTTPHeaderField:@"Content-Length"];

   NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
   NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

    NSLog(@"%@", returnString);
}

这是我的新代码。我只是尝试将单个图像文件(应用程序的屏幕截图)发送到服务器。有人可以验证客户端代码是否正确然后我可以专注于服务器端,看看为什么文件没有存放在服务器上?

- (IBAction)sendToServer {

    UIGraphicsBeginImageContext(self.view.bounds.size);
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *screenshotimage = UIGraphicsGetImageFromCurrentImageContext();


    NSData *imageData = UIImageJPEGRepresentation(screenshotimage,0.2);

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://mywebsite.com/"]];

    [request setHTTPMethod:@"POST"];

    appendData:[NSData dataWithData:imageData];


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

   NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

    NSLog(@"%@", returnString);

    UIGraphicsEndImageContext();

    NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self];

    if(conn) {
        NSLog(@"Connection Successful");
    } else {
        NSLog(@"Connection could not be made");
    }
}

1 个答案:

答案 0 :(得分:1)

您的客户端代码似乎没问题。服务器端可能存在一些问题。您的服务器可能无法检索图像。