【发布时间】:2020-10-19 04:18:50
【问题描述】:
我正在将文档上传到 HTTP 触发 Azure 函数(版本 2)。在我的函数中收到请求后,我看到 Files 部分为空,并且流被移动到 formdata 字典。下面是如何上传文档的代码,有人可以帮助我为什么它没有填充 IFormFileCollection 中的流。
using (var _httpClient = new HttpClient())
{
MultipartFormDataContent form = new MultipartFormDataContent();
String headerValue = "form-data; name=\"file\"; filename=\"" + fileName + "\"";
byte[] bytes = Encoding.UTF8.GetBytes(headerValue);
headerValue = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
fileContent.Headers.Add("Content-Disposition", headerValue);
fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data");
form.Add(fileContent);
form.Add(new StringContent(metadataValue), metadataKey);
_httpClient.Timeout = TimeSpan.FromMinutes(15);
_httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + bearerToken);
logger.LogInformation($"HttpUtils: UploadFileByMultipart() url:{url}, request param: {metadataValue} reference: {traceLogId}");
var response = await _httpClient.PostAsync(url, form).Result.Content.ReadAsStringAsync();
logger.LogInformation("HttpUtils: UploadFileByMultipart() end");
return response;
}
其他注意如何从 Formdata 字典中获取字符串格式的流并转换为我可以播放的流。我在下面尝试过,结果是一个空白文档,破坏了所有流
requestHandler.stream = new MemoryStream();
var Content = formdata["file"].ToString();
var fileContent = new MemoryStream(Encoding.ASCII.GetBytes(Content));
【问题讨论】:
标签: c# azure-functions multipartform-data multipart azure-function-app