• postman上线文件上传,并用c#服务端接收


    一:用postman实现文件上传,需要配置的地方

      1)参数的配置

      

       2)headers的配置

      

       3)body的配置       

       4)点击send就可以上传成功;

    二: 用c#服务端接收

     public async Task<IHttpActionResult> Test()
            {
                string result = "";
                string url = "";
                List<Stream> listStream = new List<Stream>();
                List<byte[]> listContentByte = new List<byte[]>();
                List<string> listFileName = new List<string>();
                string methodsName = System.Web.HttpContext.Current.Request.QueryString["methodsName"];
                string serverPath = System.Web.HttpContext.Current.Request.QueryString["serverPath"];
                string ArtifactsNum = System.Web.HttpContext.Current.Request.QueryString["ArtifactsNum"];
                string userName = System.Web.HttpContext.Current.Request.QueryString["userName"];
                string guidStr = System.Web.HttpContext.Current.Request.QueryString["guidStr"];
                string routeUrl = System.Web.HttpContext.Current.Request.QueryString["routeUrl"];
                Encoding myEncoding = Encoding.GetEncoding("UTF-8");  //gb2312
                FilesType filesType = FilesType.General;            
                //接收传递过来的数据流
                Stream stream = System.Web.HttpContext.Current.Request.InputStream;
                StreamReader reader = new StreamReader(stream, myEncoding);        
                string xml = " ";
                StringBuilder strXML = new StringBuilder();
                while (reader.Peek() >= 0)
                {
                    string line = reader.ReadLine().Trim();//直接读取一行
                    if (line == null) return null;
                    if (line == String.Empty) continue;
                    if (line.StartsWith("<"))
                    {
                        xml = line.Trim();
                        strXML.Append(xml);
                    }
                } 
                String xmlData = reader.ReadToEnd();
                listStream.Add(stream);
                //byte[] bytes = new byte[stream.Length];
                //stream.Read(bytes, 0, bytes.Length);         
                // 设置当前流的位置为流的开始 
                //stream.Seek(0, SeekOrigin.Begin);
                byte[] bytes = System.Text.Encoding.UTF8.GetBytes(strXML.ToString());
                listContentByte.Add(bytes);
                
                Request.Content.ReadAsStreamAsync().Result.Seek(0, System.IO.SeekOrigin.Begin);       
                ///string content = Request.Content.ReadAsStringAsync().Result;     
                var httpRequest = HttpContext.Current.Request;
                //HttpFileCollection files = HttpContext.Current.Request.Files;
                if (httpRequest.Files.Count > 0)
                {
                    foreach (string file in httpRequest.Files)
                    {
                        var postedFile = httpRequest.Files[file];
                        listFileName.Add(postedFile.FileName.Split('.')[0]);                                    
                    }
                }
    
                      
                using (HttpClient client = new HttpClient())
                {
                    Dictionary<string, string> DicData = new Dictionary<string, string>();
                    DicData.Add("MethodName", methodsName);
                    DicData.Add("ServerPath", serverPath);
                    DicData.Add("ArtifactsNum", ArtifactsNum.ToString());
                    DicData.Add("SendTime", DateTime.Now.ToString());
                    DicData.Add("UserName", userName);
                    DicData.Add("FileType", filesType.ToString());
                    DicData.Add("FileGuid", guidStr);
                    client.MaxResponseContentBufferSize = 2147483647;
                    client.Timeout = TimeSpan.FromMinutes(30);
                    MediaTypeWithQualityHeaderValue temp = new MediaTypeWithQualityHeaderValue("application/json") { CharSet = "utf-8" };
                    client.DefaultRequestHeaders.Accept.Add(temp);//设定要响应的数据格式
                    using (var content = new MultipartFormDataContent())//表明是通过multipart/form-data的方式上传数据
                    {
                        var formDatas = this.GetFormDataByteArrayContent(this.GetNameValueCollection(DicData));//获取键值集合对应
                        var files = this.GetFileByteArray(listContentByte, listFileName);//获取文件集合对应的ByteArrayContent集合
                        Action<List<ByteArrayContent>> act = (dataContents) =>
                        {//声明一个委托,该委托的作用就是将ByteArrayContent集合加入到MultipartFormDataContent中
                            foreach (var byteArrayContent in dataContents)
                            {
                                content.Add(byteArrayContent);
                            }
                        };
                        act(formDatas);
                        act(files);//执行act
                        try
                        {
                            url = string.Format(routeUrl + "api/Trading/Files/UploadOptimizeFile");
                            var returnResult = client.PostAsync(url, content).Result;//post请求   
                            if (returnResult.StatusCode == HttpStatusCode.OK)
                                result = returnResult.Content.ReadAsAsync<string>().Result;
                            else
                                result = "30|客户端连接路由端出错,错误代码:" + returnResult.StatusCode.ToString();
                        }
                        catch (Exception ex)
                        {
                            result = "29|客户端连接超时";                 
                        }
                    }
                }
                return Ok(result);
            }
  • 相关阅读:
    ffmpeg mp4 视频输出为 aac 的命令
    git操作远程分支
    Linux (openSUSE 15.3 ) server ssh 可以使用,sftp无法使用
    小小思考题
    Linux 命令介绍
    2021 年 如何使用VMware 安装 ubuntu 7.04 虚拟机, 配置 apt 源
    Linux 下 命令行 使用浏览器
    oracle.cmd
    Sqlcmd
    vue eslint 配置使用
  • 原文地址:https://www.cnblogs.com/zhouyuqiu/p/12084019.html
Copyright © 2020-2023  润新知