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;//上传成功
            }
  • 相关阅读:
    PHP(Zend Studio)入门视频
    PHP开发工具
    ggplot2 pdf import in Adobe Illustrator missing font AdobePiStd
    Python逐行读取文件内容
    R语言合并data.frame
    shell删除最后一列、删除第一行、比较文件
    C语言的fopen函数(文件操作/读写)
    Android 必须知道2018年流行的框架库及开发语言,看这一篇就够了!
    谈谈你对Glide和Picasso他们的对比的优缺点
    Google推荐——Glide使用详解(图片加载框架)
  • 原文地址:https://www.cnblogs.com/94cool/p/10892634.html
Copyright © 2011-2022 走看看