base64 바이트를 이용한 파일 읽기 / 생성

 

base64를 통해 파일을 바이트 혹은 "텍스트" 형태로 주고 받을 수 있습니다.

using System;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;

namespace Base64
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            //텍스트가 길어질 수 있으니 늘려줍니다.
            //혹은 파일을 읽어도 괜찮겠네요.
            textBox1.MaxLength = 100000000;
        }

        private void button_fileToBase64_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();

            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                string filePath = openFileDialog.FileName;
                byte[] fileBytes = File.ReadAllBytes(filePath); //바이트로 파일을 읽어온 후
                char[] fileToBase64 = new char[(int)Math.Ceiling(fileBytes.Length * 1.5)]; //base64는 33% 증가!
                Convert.ToBase64CharArray(fileBytes, 0, fileBytes.Length, fileToBase64, 0); //base64로 만들어줍니다.

                MessageBox.Show(fileBytes.Length + " " + fileToBase64.Length);

                Clipboard.SetText(new string(fileToBase64)); //클립보드에 복사해줍니다. string으로 만들어서!
            }
        }

        private void button_base64ToFile_Click(object sender, EventArgs e)
        {
            string text = textBox1.Text;
            byte[] textBytes = Convert.FromBase64String(text); //위의 string을 다시 base64 byte로 만들어줍니다.

            string folder = Directory.GetCurrentDirectory();
            string filePath = Path.Combine(folder, "file");
            File.WriteAllBytes(filePath, textBytes); //해당 값으로 파일을 만들어줍니다.

            Process.Start(folder); //파일 생성 확인용 폴더 띄워주기
        }
    }
}

+ Recent posts