C# webapi 上传下载图片

客户端上传文件

string url = url + "webUploadFile";Uri server = new Uri(url);HttpClient httpClient = new HttpClient();MultipartFormDataContent multipartFormDataContent = new MultipartFormDataContent();StreamContent streamConent = new StreamContent(new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read));multipartFormDataContent.Add(streamConent, "jpg", fileName);HttpResponseMessage responseMessage = httpClient.PostAsync(server, multipartFormDataContent).Result;return responseMessage;

 

服务端接收文件

 

[Route("webUploadFile"), System.Web.Http.HttpPost]
public HttpResponseMessage webUploadFile()

{

  if (HttpContext.Current.Request.Files.AllKeys.Any()){var httpPostedFiles = HttpContext.Current.Request.Files;if (httpPostedFiles != null && httpPostedFiles.Count > 0){// 获取文件HttpPostedFile httpPostedFile = httpPostedFiles[0];string fileExtension = ".jpg";// Path.GetExtension(httpPostedFile.FileName);// 文件扩展名string fileId = "11";string filePath = uploadPath + fileId + fileExtension;// 上传路径
httpPostedFile.SaveAs(filePath);string jsonres = "{\"code\":\"200\",\"message\":\"文件上传成功\", \"data\":{ \"fileUrl\":\"" + downloadurl+ "webDownloadFile?fileId=" + fileId + "\"}}";return new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(jsonres, System.Text.Encoding.UTF8, "application/json")};}}
}

 

服务端下载文件

[Route("webDownloadFile"), System.Web.Http.HttpGet]   public HttpResponseMessage webDownloadFile(){if (HttpContext.Current.Request.Params.Count > 0 && HttpContext.Current.Request["fileId"] != null){string fileId = HttpContext.Current.Request["fileId"];string fileName = fileId + ".jpg";string path = uploadPath + fileName;if (!File.Exists(path)){return new HttpResponseMessage(HttpStatusCode.NotFound) { Content = new StringContent(Common.ReturnMessage("404", "文件不存在"), System.Text.Encoding.UTF8, "application/json") };}HttpResponseMessage result = null;FileStream fs = new FileStream(path, FileMode.Open);result = new HttpResponseMessage(HttpStatusCode.OK);result.Content = new StreamContent(fs);result.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/jpeg");return result;}return new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent(Common.ReturnMessage("400", "文件下载失败"), System.Text.Encoding.UTF8, "application/json") };}

 

转载于:https://www.cnblogs.com/jhlong/p/10784383.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OC-@dynamic 关键字

dynamic这个关键词,通常是用不到的。 它与synthesize的区别在于: 使用synthesize编译器会确实的产生getter和setter方法,而dynamic仅仅是告诉编译器这两个方法在运行期会有的,无需产生警告。 假设有这么个场景,B类&…

git -- 练习的笔记

gitgitee.com:my_exercises/my_exercises.githttps://gitee.com/my_exercises/my_exercises/invite_link?invite3ab56c724a0aed34ae2bd193ce87e741e67fe05ee029cc01b7993663152babc57d76203fdafbbb42e766b0d826817bc91.在任意位置右键打开 2.初始化设置 3.添加远程仓库地址 4.…

Swift傻傻分不清楚系列(十二) 属性

本页包含内容: 存储属性(Stored Properties)计算属性(Computed Properties)属性观察器(Property Observers)全局变量和局部变量(Global and Local Variables)类型属性&a…

GIT — 使用回顾

回顾Git的使用 记录每次的变更 工作区 --> 暂存区 git add . / git add 文件 文件夹 .... 工作区 --> 暂存区/本地仓库 前提条件:文件曾经被添加到暂存区或提交到仓库git commit -a -m 提交说明 暂存区 --> 本地仓库 git commit -m 提交说明 / git commi…

获取两个数百分比的值

1 /**2 * 获取两个数百分比的值3 * 4 * param num1 5 * param num26 * param retain 保留小数位数7 * return8 */9 public static String numberFormat(int num1, int num2, int retain) { 10 NumberFormat numberFormat …

iOS AVAudioPlayer和AVAudioPlayerDelegate-音频播放处理中断

学习总是在进行。 一、AVAudioPlayer如何处理中断 AVAudioPlayer类提供了代理方法&#xff0c;用来处理当播放音频文件时&#xff0c;发生来电、闹钟等事件。设置代理并遵守AVAudioPlayerDelegate协议,<span style"font-family: Arial, Helvetica, sans-serif;"&g…

Ajax — 大事件项目(第一天)

应用的前端技术 Ajax (重要) — jQuery方式接口请求Layui 框架使用HTML CSS JS 项目说明和演示 线上 DEMO 项目地址&#xff1a;http://www.liulongbin.top:8086/项目的 API 接口地址&#xff1a; https://www.showdoc.cc/escook?page_id3707158761215217 项目请求根路径…

JS,JQ 格式化小数位数

在<script>中&#xff1a; $(function(){   var num$(".price").length;/*获取应用了class"price"的标签数量*/   for(var i0;i<num;i){     if($(".price")[i].innerText!"")       $(".price")[i]…

iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式

说明&#xff1a; 1&#xff09;该文简短介绍在iOS开发中遍历字典、数组和集合的几种常见方式。 2&#xff09;该文对应的代码可以在下面的地址获得&#xff1a;https://github.com/HanGangAndHanMeimei/Code 一、使用for循环 要遍历字典、数组或者是集合&#xff0c;for循环是…

windows系统作为客户端时,linux中本地yum源挂载时,如何同时挂载DVD1和DVD2?

这里以CentOS6.5为例.他的镜像有两个DVD1和DVD2.DVD1中是系统和主要的安装包,DVD2中是剩下的安装包 当挂载时如果要同时挂载DVD1和DVD2.需要这样做: 1)在虚拟机的设置中选择连接 2)分别在mnt下创建cdrom和cdrom1文件夹 3)到dev下查看有软连接 cdrom->sr0 cdrom1->sr1 这里…

Ajax — 大事件项目(第二天)

大事件-02 fix一个bug 原因&#xff1a; 开始做注册的时候&#xff0c;页面中只有一个 namepassword的input&#xff0c;所以 $(‘input[name“password”]’) 可以准确的找到元素后来做登录的时候&#xff0c;页面中多了一个namepassword的input&#xff0c;所以$(‘input[…

OpenCV自带dnn的Example研究(3)— object_detection

这个博客系列&#xff0c;简单来说&#xff0c;今天我们就是要研究https://docs.opencv.org/master/examples.html下的6个文件&#xff0c;看看在最新的OpenCV中&#xff0c;它们是如何发挥作用的。在配置使用的过程中&#xff0c;需要注意使用较高版本的VS避免编译器兼容问题&…

Ajax — 大事件项目(第三天)

大事件-03 用户信息 表单验证 html中&#xff0c;直接使用layui提供的内置验证规则 email <input type"text" name"email" required lay-verify"required|email" placeholder"请输入邮箱" autocomplete"off" class&q…

iOS中监测来电方案

问题 最近在做一个有录音功能的App&#xff0c;要求当用户接到来电时&#xff0c;要停止录音。该如何实现这个功能呢&#xff1f; 解决方案 我首先想到了AppDelegate里的applicationWillResignActive:方法&#xff0c;在该方法的注释中就写到到收到来电或短信时&#xff0c;系统…

iOS运行时-使用Runtime向Category中添加属性以及运行时介绍

前言 了解OC的都应该知道&#xff0c;在一般情况下&#xff0c;我们是不能向Category中添加属性的&#xff0c;只能添加方法&#xff0c;但有些情况向&#xff0c;我们确实需要向Category中添加属性&#xff0c;而且很多系统的API也有一些在Category添加属性的情况&#xff0c;…

Ajax — cropper (图片剪裁)基本用法

jQuery-cropper插件完整的API&#xff1a;http://www.jq22.com/jquery-info9322 1. 基本使用步骤 在 <head> 中导入 cropper.css 样式表&#xff1a; <link rel"stylesheet" href"/assets/lib/cropper/cropper.css" />在 <body> 的结…

「短篇小说」灵囚 540 天

转载&#xff1a;知乎 - BIMBOX 孙彬 - https://zhuanlan.zhihu.com/p/24655832 「我们总有一天会逾越那条上帝划好的界限&#xff0c;而最终我们将无法面对真实和虚假&#xff0c;正义与罪恶。」 「不幸的是&#xff0c;从伊甸园那一次&#xff0c;我们就已经越界了。」 第十天…

iOS 够逼格的注释总结

首先关于注意这里就不说什么VVDocument了&#xff0c;来点新鲜的&#xff01; 也许你使用过#warning 警告提示 也许你也使用过#pragma marks。 但是你见过或者使用过下面这个吗&#xff1f; Comments containing:MARK:TODO:FIXME:!!!:???: 没有&#xff0c;那么你就快速的看…

Git图形化管理工具

Git图形化管理工具 注意&#xff1a;必须在创建的仓库中进行右键打开 复制这段内容后打开百度网盘App&#xff0c;操作更方便哦。 链接&#xff1a;https://pan.baidu.com/s/1eXIk01LXSmzmXvYfw3MnEA 提取码&#xff1a;J166 --来自百度网盘超级会员V5的分享 分类 sourceTr…

TCP/IP(一):数据链路层

背景 这一系列的文章主要是为一般的、非专业开发岗位(如移动端)的工程师准备&#xff0c;一方面可以对网络的基本知识有基本的了解&#xff0c;另一方面不至于面试中被问到相关问题时束手无策。知识以 TCP/IP 协议簇为主&#xff0c;也会有应用层和数据链路层的简单介绍。 文…