C#Post上传图片代码

2,655次阅读
没有评论

 

虽然看不懂什么意思,但是能用就行了 O98K

 

 

原地址 https://bbs.csdn.net/topics/390548882?page=1


public static string BuildRequest(string fileName)
    {
        string contentType = "image/jpeg";
        // 待请求参数数组
        FileStream Pic = new FileStream(fileName, FileMode.Open);
        byte[] PicByte = new byte[Pic.Length];
        Pic.Read(PicByte, 0, PicByte.Length);
        int lengthFile = PicByte.Length;
        Dictionary<string, string> dicPara = new Dictionary<string, string>();
        dicPara.Add("access_token", "xxxxx");
        dicPara.Add("oauth_consumer_key", "xxxxx");
        dicPara.Add("openid", "xxxx");
        dicPara.Add("content", "xxxx");
        // 构造请求地址
        string strUrl = "https://xxx/t/add_pic_t";

        // 设置 HttpWebRequest 基本信息
        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(strUrl);
        // 设置请求方式:get、post
        request.Method = "POST";
        // 设置 boundaryValue
        string boundaryValue = DateTime.Now.Ticks.ToString("x");
        string boundary = "--" + boundaryValue;
        request.ContentType = "\r\nmultipart/form-data; boundary=" + boundaryValue;
        // 设置 KeepAlive
        request.KeepAlive = true;
        // 设置请求数据,拼接成字符串
        StringBuilder sbHtml = new StringBuilder();
        foreach (KeyValuePair<string, string> key in dicPara)
        {sbHtml.Append(boundary + "\r\nContent-Disposition: form-data; name=\"" + key.Key + "\"\r\n\r\n"+ key.Value +"\r\n");
        }
        sbHtml.Append(boundary + "\r\nContent-Disposition: form-data; name=\"pic\"; filename=\"");
        sbHtml.Append(fileName);
        sbHtml.Append("\"\r\nContent-Type: "+ contentType +"\r\n\r\n");
        string postHeader = sbHtml.ToString();
        // 将请求数据字符串类型根据编码格式转换成字节流
        Encoding code = Encoding.GetEncoding("GBK");
        byte[] postHeaderBytes = code.GetBytes(postHeader);
        byte[] boundayBytes = Encoding.ASCII.GetBytes("\r\n" + boundary + "--\r\n");
        // 设置长度
        long length = postHeaderBytes.Length + lengthFile + boundayBytes.Length;
        request.ContentLength = length;

        // 请求远程 HTTP
        Stream requestStream = request.GetRequestStream();
        Stream myStream = null;
        try
        {
            // 发送数据请求服务器
            requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
            requestStream.Write(PicByte, 0, lengthFile);
            requestStream.Write(boundayBytes, 0, boundayBytes.Length);
            HttpWebResponse HttpWResp = (HttpWebResponse)request.GetResponse();
            myStream = HttpWResp.GetResponseStream();}
        catch (WebException e)
        {//LogResult(e.Message);
            return "";
        }
        finally
        {if (requestStream != null)
            {requestStream.Close();
            }
        }

        // 读取处理结果
        StreamReader reader = new StreamReader(myStream, code);
        StringBuilder responseData = new StringBuilder();

        String line;
        while ((line = reader.ReadLine()) != null)
        {responseData.Append(line);
        }
        myStream.Close();
        return responseData.ToString();}

正文完
 0
Rioad
版权声明:本站原创文章,由 Rioad 于2018-12-16发表,共计2285字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码