html上传数据流,web api 如何通过接收文件流的方式,接收客户端及前端上传的文件...

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

服务端接收文件流代码:

public async Task 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:\Users\xxxx\Desktop\woman.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:\Users\xxxx\Desktop\woman.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;//上传成功

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值