winfrom上传图片到服务器通过post方式

 

1.浏览按钮

winfrom

 private void btnCheckImages_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialogTemp = new OpenFileDialog();
            DialogResult dr = openFileDialogTemp.ShowDialog();
            if (dr == DialogResult.OK)
            {
                string image = openFileDialogTemp.FileName;
                string picpath = openFileDialogTemp.FileName;

                pictureBox1.Image = Image.FromFile(image);
                this.txtImagesUrl.Text = image;
            }
        }

2.上传按钮

  /// <summary>
        /// 上传图片
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnUpImages_Click(object sender, EventArgs e)
        {
            //判断图片的大小  ;
            int height = pictureBox1.Image.Height;
            int width = pictureBox1.Image.Width;
            if (height < 40 && width < 40)
            {
                //将图片转为base64上传到服务器
                string image = ImageUtils.ImgToBase64String((Bitmap)pictureBox1.Image);
                Dictionary<string, string> dict = new Dictionary<string, string>();
                dict.Add("image", image); 

                //将图片转为base64编码上传到服务器,再在服务器解码

                string ret = HttpMethods.DoPost(ConstUtils.clientUrl + "WMS/Stock/UploadImage", dict, ConstUtils.httpTimeout);
                if (ret == null)
                {
                    MessageBox.Show("网络异常");
                    return;
                }
            }
            else
            {
                //先将图片压缩
                Bitmap bitmap = ImageUtils.GetThumbnail((Bitmap)pictureBox1.Image, 40, 40);
                //再将图片转为base64上传到服务器
                //将图片转为base64上传到服务器
                string image = ImageUtils.ImgToBase64String(bitmap);
                Dictionary<string, string> dict = new Dictionary<string, string>();
                dict.Add("image", image);
                string ret = HttpMethods.DoPost(ConstUtils.clientUrl + "WMS/Stock/UploadImage", dict, ConstUtils.httpTimeout);
                if (ret == null)
                {
                    MessageBox.Show("网络异常");
                    return;
                }
            }
        }

2.服务器

 public string UploadImage(string image)
        {
            //将base64的字符串转回图片
            Bitmap bitmap = Utility.ImageUtils.Base64StringToImage(image);
            string virtualPath = Path.Combine("/Uploads/Avatar/", Guid.NewGuid().ToString().Replace("-", "").ToUpper() + ".png");
            string filePath = Request.MapPath(virtualPath);
            if (FileUtil.Exists(filePath))
            {
                FileUtil.Delete(filePath);
            }
            bitmap.Save(filePath, ImageFormat.Png);
            return  virtualPath;
        }

 

    ImageUtils类

 public class ImageUtils
    {
        /// <summary>
        /// 压缩图片
        /// </summary>
        /// <param name="b">图片</param>
        /// <param name="destHeight"></param>
        /// <param name="destWidth"></param>
        /// <returns></returns>
        public static Bitmap GetThumbnail(Bitmap b, int destHeight, int destWidth)
        {
            Image imgSource = b;
            ImageFormat thisFormat = imgSource.RawFormat;
            int sW = 0, sH = 0;
            // 按比例缩放           
            int sWidth = imgSource.Width;
            int sHeight = imgSource.Height;
            sW = sWidth;
            sH = sHeight;
            Bitmap outBmp = new Bitmap(destWidth, destHeight);
            Graphics g = Graphics.FromImage(outBmp);
            g.Clear(Color.Transparent);
            // 设置画布的描绘质量         
            g.CompositingQuality = CompositingQuality.HighQuality;
            g.SmoothingMode = SmoothingMode.HighQuality;
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            //g.DrawImage(imgSource, new Rectangle((destWidth - sW) / 2, (destHeight - sH) / 2, sW, sH), 0, 0, imgSource.Width, imgSource.Height, GraphicsUnit.Pixel);
            g.DrawImage(imgSource, new Rectangle(0, 0, destWidth, destHeight), new Rectangle(0, 0, imgSource.Width, imgSource.Height), GraphicsUnit.Pixel);
            g.Dispose();
            // 以下代码为保存图片时,设置压缩质量     
            EncoderParameters encoderParams = new EncoderParameters();
            long[] quality = new long[1];
            quality[0] = 100;
            EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
            encoderParams.Param[0] = encoderParam;
            imgSource.Dispose();
            return outBmp;
        }

        public static string SaveThumb(string fileName, int destWidth, int destHeight, string savePath, string virtualPath)
        {
            Bitmap bitmap = new Bitmap(fileName);
            Bitmap outBitmap = GetThumbnail(bitmap, destHeight, destWidth);
            string outputName = Guid.NewGuid().ToString().Replace("-", "");
            string outputFilePath = savePath + virtualPath + outputName + ".png";
            outBitmap.Save(outputFilePath, ImageFormat.Png);
            return virtualPath + outputName + ".png";
        }

        //图片转为base64编码的字符串  
        public static string ImgToBase64String(Bitmap bitmap)
        {
            try
            {
                MemoryStream ms = new MemoryStream();
                bitmap.Save(ms, ImageFormat.Png);
                byte[] arr = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(arr, 0, arr.Length);
                ms.Close();
                return Convert.ToBase64String(arr);
            }
            catch (Exception ex)
            {
                return null;
            }
        }

        //图片转为base64编码的字符串  
        public static string ImgToBase64String(string Imagefilename)
        {
            try
            {
                Bitmap bmp = new Bitmap(Imagefilename);
                MemoryStream ms = new MemoryStream();
                bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] arr = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(arr, 0, (int)ms.Length);
                ms.Close();
                return Convert.ToBase64String(arr);
            }
            catch (Exception ex)
            {
                return null;
            }
        }

        //threeebase64编码的字符串转为图片  
        public static Bitmap Base64StringToImage(string strbase64)
        {
            try
            {
                byte[] arr = Convert.FromBase64String(strbase64);
                MemoryStream ms = new MemoryStream(arr);
                Bitmap bmp = new Bitmap(ms);
                bmp.Save(@"d:\test.png", System.Drawing.Imaging.ImageFormat.Png);
                ms.Close();
                return bmp;
            }
            catch (Exception ex)
            {
                return null;
            }
        }

        /// <summary>
        /// 将图片路径转换未图片
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static Bitmap GetBitmap(string url)
        {
            HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
            myRequest.Method = "GET";

            HttpWebResponse myResponse = null;
            try
            {
                myResponse = (HttpWebResponse)myRequest.GetResponse();
                StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
                Stream stream = myResponse.GetResponseStream();
                MemoryStream ms = null;
                Byte[] buffer = new Byte[myResponse.ContentLength];
                int offset = 0, actuallyRead = 0;
                do
                {
                    actuallyRead = stream.Read(buffer, offset, buffer.Length - offset);
                    offset += actuallyRead;
                }
                while (actuallyRead > 0);
                ms = new MemoryStream(buffer);
                Image image = Image.FromStream(ms);
                myResponse.Close();
                stream.Close();
                ms.Close();
                return new Bitmap(image);
            }
            //异常请求  
            catch (WebException ex)
            {
                return null;
            }
            //return base64str;
        }
    }

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知音难遇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值