XmlWriter.WriteBase64(Byte[], Int32, Int32) XmlWriter.WriteBase64(Byte[], Int32, Int32) XmlWriter.WriteBase64(Byte[], Int32, Int32) XmlWriter.WriteBase64(Byte[], Int32, Int32) Method

定義

在衍生類別中覆寫時,以 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 Int32 Int32 Int32

緩衝區中的位置指示要寫入的位元組開頭。The position in the buffer indicating the start of the bytes to write.

count
Int32 Int32 Int32 Int32

要寫入的位元組數。The number of bytes to write.

例外狀況

indexcount 小於零。index or count is less than zero.

-或--or- 緩衝區長度減去 index 會小於 countThe 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 'Base64EncodeImageFile

備註

比方說,位元組緩衝區可能包含 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-A-za-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年註解的網站要求For more information, see Requests for Comments (RFC) 1521 located on the Request for Comments Web site.

這個方法的非同步版本,請參閱WriteBase64AsyncFor the asynchronous version of this method, see WriteBase64Async.

適用於