0

我正在尝试将图像从 mydevice 发送到服务器使用 Socket。

我使用此代码将图像转换为字节。之后,我将字节发送到服务器:

- (IBAction)btnSend:(id)sender {

    UIImage *image = [UIImage imageNamed:@"button.png"];
    NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];
//    NSLog(@"data: %@", imageData);
    NSString *string = [NSString stringWithFormat:@"%@", imageData];
    NSDictionary *deviceDic = @{@"RequestType": @"5",
                                @"StringData":string};
    NSData* bodyData = [NSJSONSerialization dataWithJSONObject:deviceDic
                                                       options:kNilOptions error:nil];
    [socket writeData:bodyData withTimeout:-1 tag:0];
}

但是,我的字节数组非常大,所以我想将字节发送到服务器。

4

1 回答 1

0

看起来您正在将图像数据编码为字符串(base64?),然后将其编码NSDictionaryNSDataJSON 对象并将其发布到您的服务器。

将图像编码为字符串总是会产生比图像表示中的数据本身更大的内容长度(请参阅此处)。因此,如果您想向服务器发送更少的数据,您将需要找到一种方法以二进制格式直接上传您的图像。没什么大不了的,只是您的服务器的 API 需要支持该功能。

于 2015-07-01T12:38:09.297 回答