ibcadmin 发表于 2014-12-17 09:18:32

C#Post传图片

先上代码using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Drawing;
using System.Web;
using System.Net;

namespace postpic
{
    class postClass
    {
      /// <summary>
      /// 向服务器post文字和图片
      /// </summary>
      ///<param name="url">url
      ///<param name="userName">用户名
      ///<param name="userPwd">密码
      ///<param name="jpegPath">头像地址
      /// <returns>返回服务器返回值</returns>
      public string post(string url,string userName, string userPwd, string jpegPath)
      {
            //将图片转化为byte[]再转化为string
            string array = Convert.ToBase64String(imageToByteArray(jpegPath));
            //构造post提交字段
            string para = name=+userName+&pwd=+userPwd+&head=+HttpUtility.UrlEncode(array);
      
            #region HttpWebRequest写法

            HttpWebRequest httpWeb = (HttpWebRequest)WebRequest.Create(url);
            httpWeb.Timeout = 20000;
            httpWeb.Method = POST;
            httpWeb.ContentType = application/x-www-form-urlencoded;
            byte[] bytePara = Encoding.ASCII.GetBytes(para);
            using (Stream reqStream = httpWeb.GetRequestStream())
            {
                //提交数据
                reqStream.Write(bytePara, 0, para.Length);
            }
            //获取服务器返回值
            HttpWebResponse httpWebResponse = (HttpWebResponse)httpWeb.GetResponse();
            Stream stream = httpWebResponse.GetResponseStream();
            StreamReader streamReader = new StreamReader(stream, Encoding.GetEncoding(utf-8));
            //获得返回值
            string result = streamReader.ReadToEnd();
            stream.Close();

            #endregion
            //将服务器返回值返回
            return result;
      }

      /// <summary>
      /// 图片转为Byte字节数组
      /// </summary>
      ///<param name="FilePath">路径
      /// <returns>字节数组</returns>
      private byte[] imageToByteArray(string FilePath)
      {
            using (MemoryStream ms = new MemoryStream())
            {
                using (Image imageIn = Image.FromFile(FilePath))
                {
                  using (Bitmap bmp = new Bitmap(imageIn))
                  {
                        bmp.Save(ms, imageIn.RawFormat);
                  }
                }
                return ms.ToArray();
            }
      }
    }
   
}

其实仔细看 很简单 就是把图片流转为Byte[]然后提交。 在服务器端 在用相同方法反着转回来就行了。

页: [1]
查看完整版本: C#Post传图片