zoukankan      html  css  js  c++  java
  • web api 如何通过接收文件流的方式,接收客户端及前端上传的文件

    from:https://www.cnblogs.com/refuge/p/8534847.html

    服务端接收文件流代码:

     

    public async Task<HttpResponseMessage> ReceiveFileByStream()
            {
                var stream = HttpContext.Current.Request.InputStream;
                if (stream.Length > 0)
                {
                    var absolutePath = HttpContext.Current.Request.MapPath("/img/");
                    if (!Directory.Exists(absolutePath))
                    {
                        Directory.CreateDirectory(absolutePath);
                    }
                    var fileType = "";
                    var bytes = new byte[stream.Length];
                    stream.Read(bytes, 0, bytes.Length);
                    //前两个字节代表文件类型,这里以 JPG 类型为例
                    var bs = bytes[0].ToString() + bytes[1].ToString();
                    if (bs.Equals("255216"))
                    {
                        fileType = ".jpg";
                    }
                    var path = absolutePath + Guid.NewGuid() + fileType;
                    await Task.Run(() =>
                    {
                        using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
                        {
                            fs.Write(bytes, 0, bytes.Length);
                        }
                    });
                    return Request.CreateResponse(HttpStatusCode.OK, "上传成功!");
                }
                else
                {
                    return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "没有文件耶,哥们!");
                }
            }

    客户端上传文件流代码:

    static string TestHttpClientUpload()
            {
                var resultStr = string.Empty;
                HttpClient client = new HttpClient();
                client.BaseAddress = new Uri("http://192.168.20.15:57895");
                string apiUrl = "api/upload/ReceiveFileByStream";
                string path = @"C:UsersxxxxDesktopwoman.jpg";
                FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
                HttpContent content = new StreamContent(fs);
                var result = client.PostAsync(apiUrl, content).Result;
                fs.Dispose();
                resultStr = result.Content.ReadAsStringAsync().Result;
                return resultStr;//上传成功
            }

     HttpWebRequest:

    static string TestHttpWebRequestUpload()
            {
                var resultStr = string.Empty;
                string url = "http://192.168.20.15:57895/api/upload/ReceiveFileByStream";
                HttpWebRequest request = WebRequest.CreateHttp(url);
                request.Method = "post";
                string path = @"C:UsersxxxxDesktopwoman.jpg";
                FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
                var requestStream = request.GetRequestStream();
                fs.CopyTo(requestStream);
                fs.Dispose();
                requestStream.Dispose();
                var result = request.GetResponseAsync().Result;
                var responseStream = result.GetResponseStream();
                using (StreamReader sm = new StreamReader(responseStream))
                {
                    resultStr = sm.ReadToEnd();
                }
                return resultStr;//上传成功
            }
  • 相关阅读:
    POJ-1004-Finanical Management
    POJ-1003-hangover
    第一次写博客,想了很久要给自己留一个什么样的开始
    从exchange2010上面删除特定主题或特定时间的邮件
    STM32 一个定时器产生4路 独立调频率,占中比可调,脉冲个数可以统计。
    光电耦合
    STM32 定时器级联
    Eclipse 创建新的workspace
    一次提交,多文件上传
    Grid标签计算结果集中的合计行
  • 原文地址:https://www.cnblogs.com/94cool/p/10892634.html
Copyright © 2011-2022 走看看