Iphone 错误-“;损坏的JPEG数据:标记“之前有214个无关字节”;将映像发送到服务器后

Iphone 错误-“;损坏的JPEG数据:标记“之前有214个无关字节”;将映像发送到服务器后,iphone,ios,objective-c,Iphone,Ios,Objective C,我通过将图像转换为base64格式将图像发送到服务器。但问题是在发送图像字符串后,字符“+”将替换为一个空格“”。并显示了错误: Corrupt JPEG data: 214 extraneous bytes before marker 如何解决这个问题?提前谢谢你的帮助 以下是转换为base64格式的图像转换代码: -(NSString*)base64forData:(NSData*)theData { const uint8_t* input = (const uint8_t*)[the

我通过将图像转换为base64格式将图像发送到服务器。但问题是在发送图像字符串后,字符“+”将替换为一个空格“”。并显示了错误:

Corrupt JPEG data: 214 extraneous bytes before marker
如何解决这个问题?提前谢谢你的帮助

以下是转换为base64格式的图像转换代码:

-(NSString*)base64forData:(NSData*)theData {

const uint8_t* input = (const uint8_t*)[theData bytes];
NSInteger length = [theData length];

static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

NSMutableData* data = [NSMutableData dataWithLength:((length + 2) / 3) * 4];
uint8_t* output = (uint8_t*)data.mutableBytes;

NSInteger i;
for (i=0; i < length; i += 3) {
    NSInteger value = 0;
    NSInteger j;
    for (j = i; j < (i + 3); j++) {
        value <<= 8;

        if (j < length) {
            value |= (0xFF & input[j]);
        }
    }

    NSInteger theIndex = (i / 3) * 4;
    output[theIndex + 0] =                    table[(value >> 18) & 0x3F];
    output[theIndex + 1] =                    table[(value >> 12) & 0x3F];
    output[theIndex + 2] = (i + 1) < length ? table[(value >> 6)  & 0x3F] : '=';
    output[theIndex + 3] = (i + 2) < length ? table[(value >> 0)  & 0x3F] : '=';
}

return [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
}
这是服务器中显示的字符串:

    NSString *str2 = @"/9j/4AAQSkZJRgABAQAAAQABAAD/4QBYRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAZKADAAQAAAABAAAAggAAAAD/2wBDACAWGBwYFCAcGhwkIiAmMFA0MCwsMGJGSjpQdGZ6eHJmcG6AkLicgIiuim5woNqirr7EztDOfJri8uDI8LjKzsb/2wBDASIkJDAqMF40NF7GhHCExsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsb/wAARCACCAGQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4 Tl5ufo6erx8vP09fb3 Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3 Pn6/9oADAMBAAIRAxEAPwDeprtgdQPc1FdXUdrCZJD9B3JrnZ76S4lLO5C9lB4oEb3nLu4kzTvP2981zq3gTpxT/tp65pDN2e4VogO5NQBFchiASOmaz1ud5Xmr8ByvFAF 3IEQ UL9BUmagGUHrjpSqxIyaAJDSUmaTNADqSkzRmgBc0UlFAHOavdi4uiAconA96zi9ErZNNAyaAAtQGNTRw7u1SG1z0FA7EUU21hntWhZ3uHAJqg9uVFRAlTQI6uC7SRtpPNWhXJw3DKwcHkV0djcrcQgg80AWDSU402gABpc0YpMUALmikxRQBxZ5NSJgdqcsW1RnqalVUB56UDFS4VTjFXoJI5BzgVmTbCflqe1gdzxkCkNFyaOMr1rMnjweKnuQ0ZxnpVfexHIzQgZCCRxWnpEzLPtB4NZr9at6UcXqe9Mk6nPFApKXNMQZpM0UUgDNFJRQMwjaM3JNMOnFsDNXmfHFPVxtqTSxQFikf3j09at21xBHwPzqjfNJI21c4qBEkjQ8ZNArly9VZcslUo2Vcq3WprN2LbX71PcWIc7l60LQGrmfMgIyKk0oZv4xnvTngZEOfSm6QpOoR47VSJZ1NJRSZpki0ZpM0UgDNFJRQMx3f5qQ3IHAqGV8cDrUawljuc4FSi7kpuF3Zxk08XCMOcVGGjXgClKxsOOtMRLCqB94q6GBWsobkPHSrUUhIxUspMkmAZTVTRoz/aDnsoNWHbil0Vfmnf1OKcSZGtSUUlWQLRmkpKQC0UlFAzCdfmzSMTipWwab8o61JZAUY0qKRU4ZTS/LSuFhgNKhxSbeaUCkMczZHvWjYW/2eAA/ePJqhCu6ZR71r1cSJC0lFFMkKSijNABRSZooAwS KYXJNPaCU87DUflSD A/lUljg9OD81H5b/3T VGCD0NAXJw3FOXmolRm6KT FTLHJ/cNKw7liyXNwD6DNaNQ6fbMELMMFqtPEw6VaIZHRThE57U7yX9KBEdJU4tz3NL9m/2qBleipjbt7UUASeQnpTDaoewqeloAqm0T0FN wx56CrlFMCBLWNewp4hQdqkooEAAHSiiigYUtFFABRRRQAUUUUANNHaiigQCloopAFFFFMYUUUUALRRRQAUUUUAFFFFAH//2Q==";

为什么不将UIImage转换为NSData,将NSData转换为base64

NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
NSString *base64string = [imageData base64EncodedString];

只需实现许多NSData类别中的一个,如以下类别:

您的
+
符号在post数据中不是URL编码的,即使您的内容类型说它们是URL编码的

您需要将它们替换为
%2B
,收件人才能正确获取它们

    NSString *str2 = @"/9j/4AAQSkZJRgABAQAAAQABAAD/4QBYRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAZKADAAQAAAABAAAAggAAAAD/2wBDACAWGBwYFCAcGhwkIiAmMFA0MCwsMGJGSjpQdGZ6eHJmcG6AkLicgIiuim5woNqirr7EztDOfJri8uDI8LjKzsb/2wBDASIkJDAqMF40NF7GhHCExsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsb/wAARCACCAGQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4 Tl5ufo6erx8vP09fb3 Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3 Pn6/9oADAMBAAIRAxEAPwDeprtgdQPc1FdXUdrCZJD9B3JrnZ76S4lLO5C9lB4oEb3nLu4kzTvP2981zq3gTpxT/tp65pDN2e4VogO5NQBFchiASOmaz1ud5Xmr8ByvFAF 3IEQ UL9BUmagGUHrjpSqxIyaAJDSUmaTNADqSkzRmgBc0UlFAHOavdi4uiAconA96zi9ErZNNAyaAAtQGNTRw7u1SG1z0FA7EUU21hntWhZ3uHAJqg9uVFRAlTQI6uC7SRtpPNWhXJw3DKwcHkV0djcrcQgg80AWDSU402gABpc0YpMUALmikxRQBxZ5NSJgdqcsW1RnqalVUB56UDFS4VTjFXoJI5BzgVmTbCflqe1gdzxkCkNFyaOMr1rMnjweKnuQ0ZxnpVfexHIzQgZCCRxWnpEzLPtB4NZr9at6UcXqe9Mk6nPFApKXNMQZpM0UUgDNFJRQMwjaM3JNMOnFsDNXmfHFPVxtqTSxQFikf3j09at21xBHwPzqjfNJI21c4qBEkjQ8ZNArly9VZcslUo2Vcq3WprN2LbX71PcWIc7l60LQGrmfMgIyKk0oZv4xnvTngZEOfSm6QpOoR47VSJZ1NJRSZpki0ZpM0UgDNFJRQMx3f5qQ3IHAqGV8cDrUawljuc4FSi7kpuF3Zxk08XCMOcVGGjXgClKxsOOtMRLCqB94q6GBWsobkPHSrUUhIxUspMkmAZTVTRoz/aDnsoNWHbil0Vfmnf1OKcSZGtSUUlWQLRmkpKQC0UlFAzCdfmzSMTipWwab8o61JZAUY0qKRU4ZTS/LSuFhgNKhxSbeaUCkMczZHvWjYW/2eAA/ePJqhCu6ZR71r1cSJC0lFFMkKSijNABRSZooAwS KYXJNPaCU87DUflSD A/lUljg9OD81H5b/3T VGCD0NAXJw3FOXmolRm6KT FTLHJ/cNKw7liyXNwD6DNaNQ6fbMELMMFqtPEw6VaIZHRThE57U7yX9KBEdJU4tz3NL9m/2qBleipjbt7UUASeQnpTDaoewqeloAqm0T0FN wx56CrlFMCBLWNewp4hQdqkooEAAHSiiigYUtFFABRRRQAUUUUANNHaiigQCloopAFFFFMYUUUUALRRRQAUUUUAFFFFAH//2Q==";
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
NSString *base64string = [imageData base64EncodedString];