2014-07-08 21 views
0

全部,Objective-C(將單個圖像上傳到服務器)

我只是想從我的應用程序上傳一個截圖到一個服務器目錄。截圖代碼的效果很好,因爲我可以在另一個例程中通過SMS發送它,並且編譯得很好,但是我沒有使用下面的代碼在服務器目錄中看到圖像。

我只是不能得到它的工作。我只關心上傳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"); 
    } 
} 
+0

你有沒有進一步的信息?我不認爲你很努力。 – trojanfoe

+0

你能否添加一些關於服務器實現的信息,以及可能的日誌(客戶端和服務器)? –

回答

1

您的客戶端代碼似乎沒問題。服務器端可能存在一些問題。您的服務器可能無法檢索圖像。

+2

這是一條評論,而不是答案。 – trojanfoe

+0

我無法發表評論,所以我認爲這可能會有所幫助。我應該刪除它。 –

+0

是的評論要求令人沮喪。 – trojanfoe