Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 目标c-接收到的后期图像已损坏_Ios_Objective C_Http Post - Fatal编程技术网

Ios 目标c-接收到的后期图像已损坏

Ios 目标c-接收到的后期图像已损坏,ios,objective-c,http-post,Ios,Objective C,Http Post,我正在尝试将一个图像发布到web服务器,由于某种原因,接收到的文件已损坏,大小为102 我在论坛上搜索过,但找不到任何解决问题的方法。 任何帮助都会得到祝福 我的代码如下: - (void)postItemImage:(UIImage*)image withKey:(NSString*)key andItemid:(int)itemId; { NSData *imageData = UIImageJPEGRepresentation(image, 0.5); NSLog

我正在尝试将一个图像发布到web服务器,由于某种原因,接收到的文件已损坏,大小为102

我在论坛上搜索过,但找不到任何解决问题的方法。 任何帮助都会得到祝福

我的代码如下:

    - (void)postItemImage:(UIImage*)image withKey:(NSString*)key andItemid:(int)itemId;

{
    NSData *imageData = UIImageJPEGRepresentation(image, 0.5);
    NSLog(@"inside postItemImage");
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:kBasePostUrl]];
    [request setHTTPMethod:@"POST"];

    NSString *boundary = @"---------------------------14737809831466499882746641449"
    ;
    NSData *boundryData = [[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding];
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
    [request addValue:contentType forHTTPHeaderField: @"Content-Type"];

    NSMutableData *body = [NSMutableData data];

    [body appendData:boundryData];
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"Request\"\r\n\r\n%@", @"addItemMedia"] dataUsingEncoding:NSUTF8StringEncoding]];

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

    [body appendData:boundryData];
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userId\"\r\n\r\n%d", [[NSUserDefaults standardUserDefaults] integerForKey:kUserIDKey]] dataUsingEncoding:NSUTF8StringEncoding]];

    [body appendData:boundryData];
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"itemId\"\r\n\r\n%d", itemId] dataUsingEncoding:NSUTF8StringEncoding]];

    [body appendData:boundryData];
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"itemMediaType\"\r\n\r\n%@", key] dataUsingEncoding:NSUTF8StringEncoding]];

    [body appendData:boundryData];


    [request setHTTPBody:body];

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
    dispatch_async(queue, ^{
        NSLog(@"Do in background");
        //Do in background
        NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
               if (returnData) {
            dispatch_sync(dispatch_get_main_queue(), ^{
                //Do in Main thread
                NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
                NSLog(@"return: %@", returnString);
                [self.delegate uploadFinishedWithResponse:returnString];
           });
        }
    });

}

传输图像时,我建议使用base64

您应该从发送方对其进行编码,然后在另一方进行解码


在线上有很多关于如何编码/解码base64的教程。

NSURLConnection是异步的。为什么希望它与同步请求一起分派?我只是想知道。我以前用这段代码成功地测试了api,所以我试着恢复一段正常工作的代码。。。。