Azure 函数 - 如何读取表单数据
Azure functions - How to read form data
如何在 Azure 函数 中读取表单数据?我尝试以多种方式进行,但总是出现错误,例如:
using System.Net;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
dynamic data = await req.Content.ReadAsFormDataAsync();
return req.CreateResponse(HttpStatusCode.OK, $" {data}");
}
错误:Exception while executing function: Functions.FormTrigger. System.Net.Http.Formatting: No MediaTypeFormatter is available to read an object of type 'FormDataCollection' from content with media type 'application/json'.
我检查了请求内容,我收到的请求是 multipart/form-data
:
" ------WebKitFormBoundary47wKq7pk9Fcc4H9J\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nsdgs\r\n
------WebKitFormBoundary47wKq7pk9Fcc4H9J\r\nContent-Disposition: form-data; name=\" _replyto\"\r\n\r\nsdg@sdg.com\r\n
------WebKitFormBoundary47wKq7pk9Fcc4H9J\r\nContent-Disposition: form-data; name=\"message\"\r\n\r\nsdgsd\r\n
------WebKitFormBoundary47wKq7pk9Fcc4H9J--\r\n"
感谢您的任何提示。
由于请求包含 "application/x-www-form-urlencoded" 类型的内容,您需要将输入转换为 NameValueCollection 才能读取输入:
NameValueCollection col = req.Content.ReadAsFormDataAsync().Result;
return req.CreateResponse(HttpStatusCode.OK, $" {col[0]}");
您也可以传递 Key 字符串而不是 Index,这将使代码更具可读性和不言自明
为了读取表单数据,有方法ReadAsMultipartAsync:
data = await req.Content.ReadAsMultipartAsync().ConfigureAwait(false);
如何在 Azure 函数 中读取表单数据?我尝试以多种方式进行,但总是出现错误,例如:
using System.Net;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
dynamic data = await req.Content.ReadAsFormDataAsync();
return req.CreateResponse(HttpStatusCode.OK, $" {data}");
}
错误:Exception while executing function: Functions.FormTrigger. System.Net.Http.Formatting: No MediaTypeFormatter is available to read an object of type 'FormDataCollection' from content with media type 'application/json'.
我检查了请求内容,我收到的请求是 multipart/form-data
:
" ------WebKitFormBoundary47wKq7pk9Fcc4H9J\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nsdgs\r\n
------WebKitFormBoundary47wKq7pk9Fcc4H9J\r\nContent-Disposition: form-data; name=\" _replyto\"\r\n\r\nsdg@sdg.com\r\n
------WebKitFormBoundary47wKq7pk9Fcc4H9J\r\nContent-Disposition: form-data; name=\"message\"\r\n\r\nsdgsd\r\n
------WebKitFormBoundary47wKq7pk9Fcc4H9J--\r\n"
感谢您的任何提示。
由于请求包含 "application/x-www-form-urlencoded" 类型的内容,您需要将输入转换为 NameValueCollection 才能读取输入:
NameValueCollection col = req.Content.ReadAsFormDataAsync().Result;
return req.CreateResponse(HttpStatusCode.OK, $" {col[0]}");
您也可以传递 Key 字符串而不是 Index,这将使代码更具可读性和不言自明
为了读取表单数据,有方法ReadAsMultipartAsync:
data = await req.Content.ReadAsMultipartAsync().ConfigureAwait(false);