Хорошо, поехали!
В настоящее время я занимаюсь разработкой приложения для iPhone, которое будет работать в качестве системы проверки безопасности для мероприятий в церкви.Основная цель - найти участника в существующей базе данных MS SQL, а затем сохранить его в списке на iPhone / iPod Touch / iPad.Достаточно просто.Одно из полей в базе данных MS SQL имеет тип данных Image, и его функция - хранить изображение участника в двоичном виде.В настоящее время мне не разрешено переключаться на varbinary (MAX).
На iPhone я использую:
UIImage *image = [UIImage imageNamed:@"nameOfImage.jpg"];
NSData *imageData = UIImageJPEGRepresentation(image,1.0);
NSString *imageString = (NSString *)[[[NSString alloc] init] base64StringFromData:(NSData *)imageData];
Возможно, вам интересно, что такое base64StringFromData.Это категория, обсуждаемая здесь, Как мне выполнить кодирование base64 на iphone-sdk?
В категории она возвращает строку как NSASCIIStringEncoding.Затем я отправляю эту строку в веб-службу Visual Basic с помощью POST.
Предположим, что я уже установил и открыл свое соединение SQL, а также инициализировал адаптер и команду данных SQL.Итак, функция выглядит примерно так:
Public Function sendCommand(ByVal image As String) As String
Dim commandString As String
commandString = "insert into phoneApp(image) values(@image)"
Dim encoding As New System.Text.UTF8Encoding
sqlDataAdapter.InsertCommand = (commandString, sqlConnection)
sqlDataAdapter.InsertCommand.Parameters.Add(@"image", SqlDbType.Image, image.length).Value = encoding.GetBytes(image)
sqlDataAdapter.ExecuteNonQuery()
End Function
Теперь, наконец, вот что происходит.В другой функции я вызываю Response.BinaryWrite (SqlDataReader.Item ("изображение")).После этого в Internet Explorer изображение появится в браузере.Вместо этого он отображает строку в форме base64.Скопируйте и вставьте эту строку в конвертер base64 из сети, и это работает.Таким образом, кодировка на iPhone действительно правильно кодировала в base64.
Вот вопрос.Мне даже нужно кодировать в base64 для сохранения в тип данных изображения, или я должен сосредоточиться на изучении, как кодировать NSData в другую двоичную строку?