我当前正在访问 URL 来获取文件,GET 请求是
responseType: 'stream'
在我的 API 中,我需要将此“流”读入某种稍后可以使用的对象,但我需要访问文件标头,并且还能够访问完整数据(将其写出或保存) )。 这些是 PDF 文件(如果这有影响的话),但我只是不确定我应该使用什么类型来完成这样的事情。 这是我所拥有的示例,但标题不正确:
private async Task<(byte[]?, HttpContentHeaders)> ReadFileData(string url)
{
byte[]? fileData = null;
HttpContentHeaders headers = null;
using (var response = await _httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead))
{
response.EnsureSuccessStatusCode();
using (var stream = await response.Content.ReadAsStreamAsync())
using (var memoryStream = new MemoryStream())
{
await stream.CopyToAsync(memoryStream);
fileData = memoryStream.ToArray();
ByteArrayContent byteContent = new ByteArrayContent(fileData);
MultipartFormDataContent form = new MultipartFormDataContent();
form.Add(byteContent, "files", "files");
headers = form.Headers;
}
}
return (fileData, headers);
}
你尝试过这个吗:
HttpPostedFile myFile = HttpContext.Current.Request.Files[0];
MemoryStream myFileStream = new MemoryStream();
myFile.InputStream.CopyTo(myFileStream);
注意: 此代码在 WEB API 的控制器端点中执行。
我认为您不需要创建
MultipartFormDataContent
来提取标头。您可以直接访问 HttpResponseMessage.Headers
和 HttpContent.Headers
。尝试一下,看看是否获得正确的标题。