zoukankan      html  css  js  c++  java
  • C#HTTP POST文件数据

    
    

    /// <summary>
    /// 上传文件
    /// </summary>
    /// <param name="uriStr">服务器网址</param>
    /// <param name="name">http报文头中name</param>
    /// <param name="fileName">文件名</param>
    /// <param name="data">文件数据</param>
    /// <param name="offset">文件数据起始位置</param>
    /// <param name="count">文件数据长度</param>
    /// <returns></returns>

    static public string Upload(string uriStr, string name, string fileName, byte[] data, int offset, int count)
            {
                try
                {
                    var request = WebRequest.Create(uriStr);
                    request.Method = "POST";
                    var boundary = $"******{DateTime.Now.Ticks}***";
                    request.ContentType = $"multipart/form-data; boundary={boundary}";
                    boundary = $"--{boundary}";
                    using (var requestStream = request.GetRequestStream())
                    {
                        var buffer = Encoding.ASCII.GetBytes(boundary + Environment.NewLine);
                        requestStream.Write(buffer, 0, buffer.Length);
                        buffer = Encoding.ASCII.GetBytes($"Content-Disposition: form-data; name="{name}"; filename="{fileName}"{Environment.NewLine}");
                        requestStream.Write(buffer, 0, buffer.Length);
                        buffer = Encoding.ASCII.GetBytes($"Content-Type: application/octet-stream{Environment.NewLine}{Environment.NewLine}");
                        requestStream.Write(buffer, 0, buffer.Length);
                        requestStream.Write(data, offset, count);
                        buffer = Encoding.ASCII.GetBytes($"{Environment.NewLine}{boundary}--");
                        requestStream.Write(buffer, 0, buffer.Length);
                    }
                    using (var response = request.GetResponse())
                    using (var responseStream = response.GetResponseStream())
                    using (var streamReader = new StreamReader(responseStream))
                    {
                        return streamReader.ReadToEnd();
                    }
                }
                catch
                {
                    return null;
                }
            }
  • 相关阅读:
    Synchronized 锁 批量重偏向 和批量撤销
    Synchronize 偏向锁,轻量级锁升级和撤销过程,对象头的变化
    JAVA 对象到底有什么
    什么是操作系统虚拟地址
    从C角度看 i = i+ 1本质
    Linux操作系统的三种锁机制
    SpringCloud启动过程中如何完成Nacos服务注册
    Nacos源码一
    JAVA线程的本质
    SpringCloud启动-Nacos服务注册
  • 原文地址:https://www.cnblogs.com/mupiaomiao/p/6910686.html
Copyright © 2011-2022 走看看