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

Определение

Когда переопределено в производном классе, преобразует указанный набор двоичных байтов в кодировку Base64 и записывает получившийся текст.When overridden in a derived class, encodes the specified binary bytes as Base64 and writes out the resulting text.

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[]

Кодируемый массив байтов.Byte array to encode.

index
Int32

Позиция в буфере, с которой начинается запись байтов.The position in the buffer indicating the start of the bytes to write.

count
Int32

Количество записываемых байтов.The number of bytes to write.

Исключения

buffer имеет значение null.buffer is null.

Значение параметра index или count меньше нуля.index or count is less than zero.

-или--or- Длина буфера минус index меньше count.The buffer length minus index is less than count.

Метод XmlWriter вызван перед завершением предыдущей асинхронной операции.An XmlWriter method was called before a previous asynchronous operation finished. В этом случае возникает исключение InvalidOperationException с сообщением "Асинхронная операция уже выполняется".In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

Примеры

В следующем примере используется метод WriteBase64 для записи Base64 данных.The following example uses the WriteBase64 method to write Base64 data. Base64 данные внедряются в элемент <image>.The Base64 data is embedded within an <image> element.


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.For example, the byte buffer may contain the binary contents of a GIF image. Это, очевидно, недопустимый XML.This clearly would not be valid XML. Кодировка Base64 предназначена для представления произвольных байтовых последовательностей в текстовой форме, состоящей из символов 65 US-ASCII ([A-Za-z0-9 +/=]), где каждый символ кодирует 6 битов двоичных данных.The Base64 encoding is designed to represent arbitrary byte sequences in a text form comprised of the 65 US-ASCII characters ([A-Za-z0-9+/=]) where each character encodes 6 bits of the binary data. Дополнительные сведения см. в разделе запросы на комментарии (RFC) 1521, расположенные на веб-сайте Request for Comments.For more information, see Requests for Comments (RFC) 1521 located on the Request for Comments Web site.

Асинхронную версию этого метода см. в разделе WriteBase64Async.For the asynchronous version of this method, see WriteBase64Async.

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