Aracılığıyla paylaş


XmlWriter.WriteBase64(Byte[], Int32, Int32) Yöntem

Tanım

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen ikili baytları Base64 olarak kodlar ve sonuçta elde edilen metni yazar.

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)

Parametreler

buffer
Byte[]

Kodlanacak bayt dizisi.

index
Int32

Yazacak baytların başlangıcını gösteren arabellekteki konum.

count
Int32

Yazılacak bayt sayısı.

Özel durumlar

buffer, null değeridir.

index veya count sıfırdan küçüktür.

-veya-

Arabellek uzunluğu eksi index değeri değerinden countküçüktür.

Önceki XmlWriter bir zaman uyumsuz işlem tamamlanmadan önce bir yöntem çağrıldı. Bu durumda, InvalidOperationException "Zaman uyumsuz bir işlem zaten devam ediyor" iletisiyle oluşturulur.

Örnekler

Aşağıdaki örnek, veri yazmak Base64 için yöntemini kullanırWriteBase64. Veriler Base64 bir <image> öğenin içine eklenir.


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

Açıklamalar

Örneğin, bayt arabelleği bir GIF görüntüsünün ikili içeriğini içerebilir. Bu açıkça geçerli XML olmayacaktır. Kodlama, Base64 her karakterin ikili verilerin 6 bitini kodladığı 65 US-ASCII karakterinden ([A-Za-z0-9+/=]) oluşan bir metin biçiminde rastgele bayt dizilerini temsil etmek için tasarlanmıştır. Daha fazla bilgi için bkz. Açıklama İsteği Web sitesinde bulunan Açıklama İstekleri (RFC) 1521.

Bu yöntemin zaman uyumsuz sürümü için bkz WriteBase64Async. .

Şunlara uygulanır