Опубликовать base64String изображения с другими параметрами на сервере Цель c - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть изображение, и мне нужно отправить это изображение с другими параметрами на сервер.

Я преобразую изображение в строку base64.

[UIImagePNGRepresentation (image) base64EncodedStringWithOptions: NSDataBase64Encoding64CharacterLineLength];

В параметрах заголовка я отправляю это.

"Content-Type" = "application / x-www-form-urlencoded";

NSURLSessionDataTask * task = [сеанс dataTaskWithRequest: само завершениеHandler: ^ (NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {....}

Это мой формат параметров

data={"img":"","imgName":"imgName"}

Когда я отправляю "img": "iVBORw0KGgoAAAANSUhEUgAAAZUA .." Я получаю 401 ошибку

Пожалуйста, помогите мне, если кто-нибудь может найти проблему, илизнать, как отправить строку base64 с другими параметрами.Спасибо!

1 Ответ

0 голосов
/ 19 сентября 2018

Попробуйте это.

UIImage *image = yourImage;
NSString *imageBase64Str = [NSString stringWithFormat:@"%@;base64,%@",
 [self mimeTypeByGuessingFromData:imageData], [self encodeToBase64String:image]];

data = {"doc": "true", "img": "imageBase64Str", "imgName": "imgName"}

- (NSString *)mimeTypeByGuessingFromData:(NSData *)data {
    char bytes[12] = {0};
    [data getBytes:&bytes length:12];
    const char bmp[2] = {'B', 'M'};
    const char gif[3] = {'G', 'I', 'F'};
    const char swf[3] = {'F', 'W', 'S'};
    const char swc[3] = {'C', 'W', 'S'};
    const char jpg[3] = {0xff, 0xd8, 0xff};
    const char psd[4] = {'8', 'B', 'P', 'S'};
    const char iff[4] = {'F', 'O', 'R', 'M'};
    const char webp[4] = {'R', 'I', 'F', 'F'};
    const char ico[4] = {0x00, 0x00, 0x01, 0x00};
    const char tif_ii[4] = {'I','I', 0x2A, 0x00};
    const char tif_mm[4] = {'M','M', 0x00, 0x2A};
    const char png[8] = {0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a};
    const char jp2[12] = {0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20, 0x0d, 0x0a, 0x87, 0x0a};
    if (!memcmp(bytes, bmp, 2)) {
        return @"image/x-ms-bmp";
    } else if (!memcmp(bytes, gif, 3)) {
        return @"image/gif";
    } else if (!memcmp(bytes, jpg, 3)) {
        return @"image/jpeg";
    } else if (!memcmp(bytes, psd, 4)) {
        return @"image/psd";
    } else if (!memcmp(bytes, iff, 4)) {
        return @"image/iff";
    } else if (!memcmp(bytes, webp, 4)) {
        return @"image/webp";
    } else if (!memcmp(bytes, ico, 4)) {
        return @"image/vnd.microsoft.icon";
    } else if (!memcmp(bytes, tif_ii, 4) || !memcmp(bytes, tif_mm, 4)) {
        return @"image/tiff";
    } else if (!memcmp(bytes, png, 8)) {
        return @"image/png";
    } else if (!memcmp(bytes, jp2, 12)) {
        return @"image/jp2";
    }
    return @"application/octet-stream"; // default type
}

- (NSString *)encodeToBase64String:(UIImage *)image {
    return [UIImagePNGRepresentation(image) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...