导航:首页 > 文件教程 > webapi获取文件流

webapi获取文件流

发布时间:2023-01-03 11:07:54

Ⅰ WebApi获取传来的文件

1、如果是以文件的形式上传,这样接收:

2、如果是以文件流的形式上传(如从Android端使用retrofit上传多文件),这样接收:

Ⅱ WebApi 2 路由机制

.net中包含的路由有两种,第一种是MVC模式的按url匹配action,第二种是WebApi模式的按http请求的方法匹配action,本文我们学习WebApi的路由模式。

首先新建一个WebApi项目,选择ASP.NET Web应用程序(.NET Framework)

这里我们首先来看WebApi的基础配置 WebApiConfig.cs ,其路径为 /App_Start/WebApiConfig.cs

首先以浏览器启动webapi项目

会发现页面显示403,这是很正常的,因为我们在新建项目的时候没有加入MVC,所以没有可视化的view页面,不过我们却拿到了这个项目的 端口号

为了更加方便直观的看我们的接口请求,我们选择postman,首先在项目新建一个 controller

通过以上的操作,我们就搭建好了一个webApi2的项目工程,后面我们就在这个工程的基础上进行webApi 2的开发和学习。

webApi的路由过程主要经历了如下三步

WebApiConfig.cs 这个文件是进行路由表的核心文件, WebApiConfig 里面只有一个方法,这个方法在 Global.asax 文件里的 Application_Start() 方法被调用, Global.asax 文件是一个全局文件,当我们网页启动时就会去执行它。 Register(HttpConfiguration config) 方法是配置WEB API路由的。

因此 在webAP工程启动的时候,会执行 Global.asax ,这个文件里面注册了 WebApiConfig.cs 的一系列初始化配置,从而实现了webapi。

WebApi 2 框架使用路由表。 并由Web API 的 Visual Studio 项目模板创建默认路由

转到 MapHttpRoute 的定义,可以看到它有4个重载

分别来看看各个参数的作用

webApi2工程自动为我们创建了默认的路由

经过上面的讲解,我们知道了匹配的URL是 api/{controller}/{id}
那么我们在实际的请求中应该如何请求

新建一个 StudentsController

依次对以下地址进行请求

总结:

默认路由的缺点

如下

添加如下的方法(action)

得到了一下的结果

我们来看看这个请求是如何进行匹配的,首先找到 /App_Start/WebApiConfig.cs

按照路由模板来看,我们请求的路由没有 action 名称,那么它是怎么进行匹配的呢?
其实当我们访问 http://localhost:65066/api/student 这个url的时候,webapi会自动去匹配 api/{controller}/{id} 这个模板,在这个路径中,student是controller,那么它又是怎么去找到 getStudentName 这个action的呢?明明我们都没有传action这个参数,其实Webapi的路由规则是通过http方法去匹配对应的action,我们请求这个地址是用的 GET 方法,那么webapi会找Order这个控制器里面的get请求的方法,同事我们的这个 getStudentName 是以 get 开头的,它符合了webapi的匹配规则,于是就请求成功了,但前提是你写的方法必须是以get开头的,如果当前这个controller一个get开头的都没有,那么就显示 请求的资源不支持 http 方法“GET”

当然不以get开头的前提是你必须加上 [HttpGet] 这个特性,webapi才知道你这个是get的请求方法,就能正确进行匹配。

然后我们再回到 /App_Start/WebApiConfig.cs ,看下里面 MapHttpRoute 的各个参数的含义,首先转到它的定义,发现它是 HttpRouteCollection 的扩展方法, MapHttpRoute 有4类重载

在 WebApiConfig.cs 里面修改为如下的路由模板

接口请求如下

通过 action 的名称来匹配很好理解,上面的 StudentName() 是方法名, webApi 会默认它就是 action 的名称,如果你想要方法名和 action 的名称不一致,你也可以自定义 action 的名称,这个可以通过特性 ActionName 来实现,如下:

首先看路由模板

对于同请求类型,同请求参数的请求,会出现 不传参数,找不到匹配的资源 传了参数,但是找到了与该请求匹配的多个操作 的问题,如下所示

解决以上的办法有两种

如果要使用特性路由,首先在 WebApiConfig.cs 的 Register 方法里面必须先启用特性路由(一般情况下,当我们新建一个 WebApi 项目的时候,会自动在 Register 方法里面加上这句话。)

特性路由的目的是为了解决我们公共路由模板引擎解决不了的问题。一个action定义了特性路由之后,就能通过特性路由上面的路由规则找到。
只要出现了特性路由,匹配的规则是按特性路由来的
修改studentController如下

参考

参考

路由前缀的一般的做法是在控制器上面使用特性 [RoutePrefix] 来标识。
但是需要注意路由前缀不能以 / 开头

Ⅲ WebAPI系列之快速入门

前言

随着上位机开发技术的广泛应用,很多小伙伴会有上位机与MES等系统进行数据交互的需求,这时候,我们就需要了解WebAPI的相关技术。

什么是WebAPI?

WebAPI是一个简单的构建HTTP服务的新框架,用于对接各种客户端(浏览器,移动设备),在.Net平台上,WebAPI是一个开源的、理想的、构建REST-ful服务的技术。

WebAPI部署在哪里?

WebAPI部署在IIS中,用于给外部应用提供数据。

为什么要使用WebAPI?

WebAPI本质是网络应用程序接口,网络应用可以通过API接口,可以实现存储服务、消息服务、计算服务等能力,利用这些能力可以进行开发出强大功能的web应用。

创建WebAPI

1、打开VS2019,创建一个新项目,项目模板选择ASP.NET Web应用程序(.NET Framework),如下所示:

2、创建完成后,取一个项目名称,然后点击下一步,在下面的页面中,选择模板为Web API,如下所示:

3、创建项目需要一点时间,由于我们选择好了Web API,所以创建好的项目界面自动会添加好Models/Controllers/Views等文件夹,如下所示:

4、在Models文件夹下,创建一个实体类,如下所示:

5、在Controllers文件夹下,右击创建控制器,这里注意要选择Web API 2控制器模板,名称为THMonitorController,继承ApiController,如下所示:

6、在THMonitorController控制器中,创建一个实体集合对象,同时添加两个Get开头的方法,如下所示:

public class THMonitorController : ApiController

{

THMonitor[] THMonitors = new THMonitor[]

{

newTHMonitor(){Name="温度1",Value="22.3",Unit="℃",Desc="温度1"},

newTHMonitor(){Name="温度2",Value="22.1",Unit="℃",Desc="温度2"},

newTHMonitor(){Name="温度3",Value="32.3",Unit="℃",Desc="温度3"},

newTHMonitor(){Name="温度4",Value="22.3",Unit="℃",Desc="温度4"},

newTHMonitor(){Name="湿度1",Value="42.3",Unit="%",Desc="湿度1"},

newTHMonitor(){Name="湿度2",Value="42.1",Unit="%",Desc="湿度2"},

newTHMonitor(){Name="湿度3",Value="42.3",Unit="%",Desc="湿度3"},

newTHMonitor(){Name="湿度4",Value="42.3",Unit="%",Desc="湿度4"},

};

public IEnumerableGetAllTHMonitor()

{

returnTHMonitors;

}

public THMonitor GetTHMonitorByName(string name)

{

THMonitor contact = THMonitors.FirstOrDefault(item => item.Name == name);

if(contact == null)

{

throw new HttpResponseException(HttpStatusCode.NotFound);

}

returncontact;

}

7、这样,最简单的一个WebAPI项目就完成了,直接运行即可,运行地址为https://localhost:44382/。

Web API测试

使用Postman接口工具来进行测试。

Postman是一款功能强大的HTTP调试与模拟插件。获取安装包,后台回复 Postman

1、启动Postman之后,在地址栏输入https://localhost:44382/,如果要获取所有的数据,请求方式选择Get,地址栏后面加个api/THMonitor,点击Send,可以看到返回的数据,结果显示为jsON格式。

2、如果想要查询某个数据,可以加个参数,地址栏为https://localhost:44382/api/THMonitor?Name=温度1,查询结果如下所示:

3、地址栏格式可以参考项目中的WebApiConfig.cs文件:

我是新阁上位机开发的付老师,用我的专业,成就你的梦想!

-END-

Ⅳ 怎样用webapi连接到数据库的数据

先打开vs2010软件,找到项目文件,双击web.config
vs2010中web.config配置数据库连接
第一种:取连接字符串
string
connstring
=
system.web.configuration.webconfigurationmanager.connectionstrings["sqlconnstr"].connectionstring;
或者
protected
static
string
connectionstring
=
configurationmanager.connectionstrings["sqlconnstr"].connectionstring;
web.config文件:加在</configsections>后面
<connectionstrings>
<remove
name="localsqlserver"
/>
<add
name="sqlconnstr"
connectionstring="user
id=xx;password=xx;initial
catalog=database_name;data
source=.\sqlxxxx"
/>
</connectionstrings>
vs2010中web.config配置数据库连接
第二种:取连接字符串:
string
myvar=configurationsettings.appsettings["connstring"];
web.config文件:加在<appsettings>和</appsettings>
之间
<appsettings>
<add
key="connstring"
value="uid=xx;pwd=xx;database=batabase_name;server=(local)"
/>
</appsettings>
据说两者通用,但是第二种是asp.net2.0的新特性,建议使用第二种。其实我一直有个疑问,两个字符串中的uid;pwd;和user
id;
password;是否等价。根据网上我查到的资料是可以互换通用的。
vs2010中web.config配置数据库连接
连接sql
server数据库的机制与连接access的机制没有什么太大的区别,只是改变了connection对象和连接字符串中的不同参数.
首先,连接sql
server使用的命名空间不是"system.data.oledb",而是"system.data.sqlclient".
其次就是他的连接字符串了,我们一个一个参数来介绍(注意:参数间用分号分隔):
"user
id=sa":连接数据库的验证用户名为sa.他还有一个别名"uid",所以这句我们还可以写成"uid=sa".
"password=":连接数据库的验证密码为空.他的别名为"pwd",所以我们可以写为"pwd=".
这里注意,你的sql
server必须已经设置了需要用户名和密码来登录,否则不能用这样的方式来登录.如果你的sql
server设置为windows登录,那么在这里就不需要使用"user
id"和"password"这样的方式来登录,而需要使用"trusted_connection=sspi"来进行登录.
initial
catalog=northwind":使用的数据源为"northwind"这个数据库.他的别名为"database",本句可以写成"database=northwind".
"server=yoursqlserver":使用名为"yoursqlserver"的服务器.他的别名为"data
source","address","addr".如果使用的是本地数据库且定义了实例名,则可以写为"server=(local)\实例名";如果是远程服务器,则将"(local)"替换为远程服务器的名称或ip地址.
"connect
timeout=30":连接超时时间为30秒.
在这里,建立连接对象用的构造函数为:sqlconnection.
7
最后要保存你所更改的文件,右键
保存(ctrl+s).

Ⅳ RESTful架构中的webapi

通过webAPI在server端开发一个借口,在client端调用此借口的完整过程。

(VS2010版本如果包括MVC4也可以创建webAPI,或者vs2012及以上版本)

运行环境:VS2017

开发语言:c#

一、server端

1.创建webapi项目,打开vs2017-文件-新建-项目。

2.在项目中添加Controllers和Models两个文件夹,分别用于存放控制器类和实体类。

在Controllers文件夹中添加API控制器类。

控制类添加完成后,会自动生成,GET,POST,PUT,DELETE四个方法。

通过地址确定方法:

get方式:http://IP地址:端口号/api/控制器名称

post方式:[HttpGet("方法标识名称")] http://IP地址:端口号/api/控制器名称/方法标识名称

添加一个方法,在方法中描述接口需要完成的操作以及返回值。

需要注意事项:

1)传进来参数的数据类型必须与接收的数据类型相同。

二、client端

1.添加控制台应用程序用来测试调用接口是否成功。

2.定义一个方法用来调用接口并返回数据。

3.定义一个restful接口帮助类。

Ⅵ 我使用 .net core webapi 怎么获取图片并存到本地磁盘去

RESTSHARP获取图片资源读取到FILSTREAM,System.File写入本地PATH

Ⅶ WebAPI 怎样获取相对路径 获取本地路径

以下是自己的个人看法,你可以参考下。 绝对路径还有一种表示方法就是以服务器命名开始(如在本机中http://localhost)的完整描述文件学习位置的路径,如通过IIS简历一个站点,站点下面有个文件叫test.htm,那么用绝对路径来显示这个
相对路径主要用在我们的网站上,当ASP在发布一个目录时,如果在Web上也像一样,就不会显示在正常的页面。
具体的情况你可以多去后盾人学习教学视频,这样才会更加准确。

Ⅷ Asp.netCore3.0 WebApi从0到1手摸手教你写【1】简单的webapi接口

Visual Studio 2019
.net core 3.0

具体步骤如下图:

此处我们选择API(新手不推荐选择空项目,选择API系统会为我们自动创建WebApi需要的一些配置文件等),Https配置这一项我们暂时不勾选,目前我们不配置Https。

F5运行项目,然后就可以看到微软为我们写好的一个天气预报示例webapi了,这里只有一个Get请求示例,返回值为json格式。

注意: services.AddControllers(); 和 endpoints.MapControllers(); 方法成对出现, 这是.net core3.0中的最新写法

ConfigureServices方法
用来向容器中注册服务,注册好的服务可以在其他地方进行调用.

Configure方法
用来配置中间件管道,即如何响应http请求.

1 右键删除系统默认创建的 WeatherForecastController.cs 和 WeatherForecast.cs
2 新建一个控制器,命名: UserController.cs

问题来了,为啥直接给打开 weatherforecast ,而且还404了,别急,往下看。

(┬_┬)怎么还是404?别急继续往下看

上面增加 action 虽然能达到想要的结果,但是每次新建一个 Controller 都有写个 action 万一要是忘记了又要忙乎半天,有没有一劳永逸的办法呢?
继续往下看:
1.首先去掉Controller里的 Route 和 ApiController

2.修改 Startup.cs ,增加路由模版:

今天就到这里,后期继续完善我们的webapi。

https://github.com/xiaxiaoqian/NetCore3.0-WebApi

Ⅸ 2018年10月微信小程序上传文件的问题webapi方式

必须在微信公众平台填写请求,下载,上传,websocket 域名,必须是SSL加密的

Ⅹ android获取webapi到底怎么做

byte[] byts = new byte[HttpContext.Current.Request.InputStream.Length]; HttpContext.Current.Request.InputStream.Read(byts, 0, byts.Length); string req = System.Text.Encoding.Default.GetString(byts); 这是直接获取post上来的字符流数据。什么编码送的什么编码收就没有问题了。如果是你发送的表单就Request.Form去收。记住字符流数据只能收一次哟。

阅读全文

与webapi获取文件流相关的资料

热点内容
word最好的文件 浏览:345
大数据聚类数据库 浏览:247
网站关停域名怎么注销 浏览:456
适合微信阅读的手机报 浏览:114
win10设置应用权限管理 浏览:47
wordpress制作单页网站导航页面 浏览:277
什么海外网站可以看限制片 浏览:596
指尖见app在哪里下载 浏览:367
java聊天室课程设计 浏览:670
responsejavascript 浏览:71
如何从杀毒软件里面恢复出文件 浏览:972
越狱iphone如何备份 浏览:124
苹果四S万能钥匙怎么破不开 浏览:603
网络打印机共享怎么连接 浏览:313
fme系统找不到指定文件 浏览:301
iphoneid和密码忘了怎么办 浏览:238
苹果电脑优盘里的文件如何加密 浏览:284
word标题名和文件名一致 浏览:957
excel修改后的文件保持了怎么恢复 浏览:340
社保网络认证怎么弄 浏览:92

友情链接