XmlWriter.WriteBase64(Byte[], Int32, Int32) Метод

Определение

При переопределении в производном классе кодирует указанные двоичные байты как Base64 и записывает полученный текст.

public:
 abstract void WriteBase64(cli::array <System::Byte> ^ buffer, int index, int count);
public abstract void WriteBase64(byte[] buffer, int index, int count);
abstract member WriteBase64 : byte[] * int * int -> unit
Public MustOverride Sub WriteBase64 (buffer As Byte(), index As Integer, count As Integer)

Параметры

buffer
Byte[]

Массив байтов для кодирования.

index
Int32

Позиция в буфере, указывающая начало записи байтов.

count
Int32

Количество байтов для записи.

Исключения

buffer равно null.

index или count меньше нуля.

–или–

Длина буфера минус index меньше count.

Метод XmlWriter был вызван до завершения предыдущей асинхронной операции. В этом случае InvalidOperationException создается сообщение "Асинхронная операция уже выполняется".

Примеры

В следующем примере метод используется WriteBase64 для записи Base64 данных. Данные Base64 внедрены в <image> элемент.


public static void Base64EncodeImageFile() {

  int bufferSize = 1000;
  byte[] buffer = new byte[bufferSize];
  int readBytes = 0;
    
  using (XmlWriter writer = XmlWriter.Create("output.xml")) {

       FileStream inputFile = new FileStream(@"C:\artFiles\sunset.jpg",
                                                                    FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read);
       writer.WriteStartDocument();
       writer.WriteStartElement("image");
       BinaryReader br = new BinaryReader(inputFile);
       Console.WriteLine("\r\nWriting Base64 data...");

       do {
          readBytes = br.Read(buffer, 0, bufferSize);
          writer.WriteBase64(buffer, 0, readBytes);
       } while (bufferSize <= readBytes);
       br.Close();
        
    writer.WriteEndElement();// </image>
    writer.WriteEndDocument();
  }
}
Public Shared Sub Base64EncodeImageFile() 
    
    Dim bufferSize As Integer = 1000
    Dim buffer(bufferSize) As Byte
    Dim readBytes As Integer = 0
    
    Using writer As XmlWriter = XmlWriter.Create("output.xml")

            Dim inputFile As New FileStream("C:\artFiles\sunset.jpg", FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read)
            writer.WriteStartDocument()
            writer.WriteStartElement("image")
            Dim br As New BinaryReader(inputFile)
            Console.WriteLine(vbCr + vbLf + "Writing Base64 data...")
            
            Do
                readBytes = br.Read(buffer, 0, bufferSize)
                writer.WriteBase64(buffer, 0, readBytes)
            Loop While bufferSize <= readBytes
            br.Close()
        
        writer.WriteEndElement() ' </image>
        writer.WriteEndDocument()

    End Using
 
End Sub

Комментарии

Например, буфер байтов может содержать двоичное содержимое изображения GIF. Очевидно, что это не будет допустимым XML. Кодировка Base64 предназначена для представления произвольных байтовых последовательностей в текстовой форме, состоящей из 65 символов US-ASCII ([A-Za-z0-9+/=]), где каждый символ кодирует 6 бит двоичных данных. Дополнительные сведения см. в разделе "Запросы комментариев" (RFC) 1521, расположенном на веб-сайте "Запрос комментариев".

Сведения об асинхронной версии этого метода см. в разделе WriteBase64Async.

Применяется к