• 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;//上传成功
            }
  • 相关阅读:
    winfrom 中datagridview中checkbox的使用方法
    转 webservice中参数类型为datatable,报错“生成 XML 文档时出错”
    Oracle将表空间改为自动扩展
    Oracle 动态建立分区表
    运用ASMIOSTAT脚本监控asm disk磁盘性能
    ASMCMD命令
    select * from salgrade for update和select * from salgrade for update nowait区别
    Oracle 10g Block Change Tracking特性
    分佈式事務故障處理暨ORA-24756: transaction does not exist處理
    shell test 數值 字符串 文件比較
  • 原文地址:https://www.cnblogs.com/94cool/p/10892634.html
Copyright © 2020-2023  润新知