다음을 통해 공유


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가 0보다 작습니다.

또는

버퍼 길이에서 index를 빼면 count보다 작습니다.

이전 비동기 작업이 완료되기 전에 XmlWriter 메서드가 호출되었습니다. 이 경우 “비동기 작업이 이미 진행 중입니다.” 메시지를 나타내며 InvalidOperationException이 throw됩니다.

예제

다음 예제에서는 메서드를 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 각 문자가 이진 데이터의 6비트를 인코딩하는 65개의 US-ASCII 문자([A-Za-z0-9+/=])로 구성된 텍스트 형식의 임의의 바이트 시퀀스를 나타내도록 설계되었습니다. 자세한 내용은 메모 요청 웹 사이트에 있는 RFC(주석 요청) 1521을 참조하세요.

이 메서드의 비동기 버전은 를 참조하세요 WriteBase64Async.

적용 대상