C# HttpClient从URL下载图像,然后上载图像

C# HttpClient从URL下载图像,然后上载图像,c#,asp.net-web-api,upload,core,dotnet-httpclient,C#,Asp.net Web Api,Upload,Core,Dotnet Httpclient,我有一个位于url中的图像 https://somecdn/content/myimage.png 我想把这个字符串传递给我的API,将图像下载到内存中,然后上传到另一个API 我正在使用一个api客户机,它是从我们的招摇过市中生成的,它接受一种IO.stream类型 代码如下 public async Task<int> UploadPicture(string fileUrl) { var otherApiClient = awa

我有一个位于url中的图像

https://somecdn/content/myimage.png

我想把这个字符串传递给我的API,将图像下载到内存中,然后上传到另一个API

我正在使用一个api客户机,它是从我们的招摇过市中生成的,它接受一种IO.stream类型

代码如下

    public async Task<int> UploadPicture(string fileUrl)
    {
        
        var otherApiClient = await _otherApiClient.Build();
        var fileRetrievalClient = new HttpClient();           

        var fileResponse = await fileRetrievalClient.GetAsync(fileUrl);
        

        var newId = await otherApiClient.UploadPictureAsync(file: await fileResponse.Content.ReadAsStreamAsync());

        return newId;
    }
公共异步任务上载图片(字符串文件URL)
{
var otherApiClient=await_otherApiClient.Build();
var fileRetrievalClient=newhttpclient();
var fileResponse=await fileRetrievalClient.GetAsync(fileUrl);
var newId=await otherApiClient.UploadPictureAsync(文件:await fileResponse.Content.ReadAsStreamAsync());
返回newId;
}
通常,通过前端调用时,类型设置正确

内容配置:表单数据;name=“file”;filename=“yadayada.png” 内容类型:图像/png

但是,在我的代码中,内容类型是错误的

内容类型:应用程序/八位字节流 内容配置:表单数据;名称=文件;文件名=未知


如何更正此问题。

HttpClient没有名为UploadPictureAsync的方法。这表明变量otherApiClient类型不是HttpClient


您需要检查可以传递给UploadPictureAsync的其他参数,并查看如何使用fileResponse中的值传递自定义标头。标头可以执行以下操作:

var fileResponse = await fileRetrievalClient.GetAsync(fileUrl);
byte[] bytes = await fileResponse.Content.ReadAsByteArrayAsync();
using (var content = new ByteArrayContent(bytes))
{
    content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
    content.Headers.TryAddWithoutValidation("Content-Disposition", "application/octet-stream name=test");
    var postResponse = await otherApiClient.PostAsync(uri, content);
}