Ios 目标c-接收到的后期图像已损坏
我正在尝试将一个图像发布到web服务器,由于某种原因,接收到的文件已损坏,大小为102 我在论坛上搜索过,但找不到任何解决问题的方法。 任何帮助都会得到祝福 我的代码如下: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
- (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,所以我试着恢复一段正常工作的代码。。。。