導航:首頁 > 文件教程 > 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獲取文件流相關的資料

熱點內容
linuxc靜態庫創建 瀏覽:838
u盤有微信文件但微信恢復不了 瀏覽:585
蘋果的網站數據是什麼 瀏覽:22
ps滾字教程 瀏覽:237
win7網路鄰居如何保存ftp 瀏覽:186
安卓客戶端代理伺服器 瀏覽:572
編程用蘋果 瀏覽:659
51虛擬機的文件管理在哪裡 瀏覽:13
win10系統有沒有便簽 瀏覽:722
java引用傳遞和值傳遞 瀏覽:109
oracle下載安裝教程 瀏覽:854
php篩選資料庫 瀏覽:830
怎麼用手機看wlan密碼 瀏覽:745
奧維地圖導入的文件在哪裡 瀏覽:364
sdltrados2014教程 瀏覽:43
培訓制度文件在哪裡找 瀏覽:601
勒索病毒防疫工具 瀏覽:861
win10c不能打開 瀏覽:375
xfplay影音先鋒蘋果版 瀏覽:597
兩個文件打開兩個word 瀏覽:921

友情鏈接