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.