基于WinForm的图片的上传、下载、读取

1. 基本组件

        PictureBox、Button

基于WinForm的图片的上传、下载、读取_第1张图片

2.  使用

点击上传后显示:

基于WinForm的图片的上传、下载、读取_第2张图片

基于WinForm的图片的上传、下载、读取_第3张图片

点击下载后显示:

基于WinForm的图片的上传、下载、读取_第4张图片

基于WinForm的图片的上传、下载、读取_第5张图片

上传代码:

private void Bth_uoload_Click(object sender, EventArgs e)
{
    /* 上传图片逻辑:
     * 1.用户点击上传图片的按钮,给用户显示选择文件的信息(OpenFileDialog.showDialog())
     * 2. ofd过滤掉非(.jpg, .png),并且只允许上传一张图片
     * 3. 获取该图片的路径,用FileStream读取后显示在pictureBox1里
     * */
    OpenFileDialog ofd = new OpenFileDialog();
    ofd.Title = "请选择图片";
    //ofd.InitialDirectory 设置用户选择文件时的初始位置
    //ofd.InitialDirectory = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop);//桌面
    ofd.InitialDirectory = Path.GetDirectoryName(ofd.FileName);
    ofd.Filter = "(*.jpg)|*.jpg|(*.png)|*.png";//只允许.jpg或.png
    ofd.Multiselect = false;//true允许上传多张图片
    //当用户点击打开时,进入操作逻辑
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        path = ofd.FileName;
        Console.WriteLine(path);
        //创建FileStream读取图片流
        using (FileStream fileRead = new FileStream(@path, FileMode.OpenOrCreate, FileAccess.Read))
        {
            byte[] buffer = new byte[fileRead.Length];
            fileRead.Read(buffer);
            Image i = Image.FromStream(fileRead);
            pictureBox1.Image = i;
        }

    }
}

 下载代码:

private void Bth_Download_Click(object sender, EventArgs e)
{   
    /** 下载图片的逻辑:
    *    1. 用户点击下载按钮,在已经上传了图片的前提下,给用户显示选择文件夹的窗口(FolderBrowserDialog()的showDialog())
    *    2. 通过FileSteam对之前上传的图片的读取,存入buffer[]
    *    3. 拼接出新的文件的路径,并且通过FileStream写入到指定位置去  
    */     
    //已经上传了图片才会进入逻辑
    if (pictureBox1.Image != null)
    {
        FolderBrowserDialog fbd = new FolderBrowserDialog();
        fbd.Description = "另存为";
        fbd.ShowNewFolderButton = true;//在对话框显示新建文件夹按钮
        if (fbd.ShowDialog() == DialogResult.OK)
        {
            //FileStream读入上传的图片流
            using (FileStream fileRead = new FileStream(@path, FileMode.OpenOrCreate, FileAccess.Read))
            {
                byte[] buffer = new byte[fileRead.Length];    
                //将读取到的内容写入到buffer[]    
                fileRead.Read(buffer);                                         
                //给新文件拼接个名字
                string download_path = fbd.SelectedPath;
                string strTime = System.DateTime.Now.ToString("yyyyMMddHHmm");
                string filePath = @download_path + @strTime + ".jpg";
                //FileStream将buffer[]写入到指定位置的文件流
                using (FileStream fs = new FileStream(@filePath, FileMode.CreateNew))
                {
                    fs.Write(buffer, 0, buffer.Length);
                }
            }
        }
    }
}

你可能感兴趣的:(c#,开发语言)