繁体   English   中英

HttpClient从URL下载图片然后上传图片

[英]HttpClient Download Image From URL Then Upload Image

我有一个位于 url 中的图像。

https://somecdn/content/myimage.png

我想将此字符串传递给我的 API,将图像下载到 memory 然后上传到另一个 API。

我正在使用从我们的 swagger 生成的 api 客户端,它采用 IO.ZF7B44B44CAFFD5C58A72E7D 类型

代码如下。

    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;
    }

通常,当通过前端调用时,类型设置正确。

内容处置:表单数据; 名称=“文件”; filename="yadayada.png" 内容类型:image/png

但是在我的代码中,Content-Type 是错误的。

Content-Type: application/octet-stream Content-Disposition: form-data; 名称=文件; 文件名=未知

我该如何纠正这一点。

你可以这样做:

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);
}

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

您需要检查可以传递给UploadPictureAsync的其他参数,并查看如何使用fileResponse.Headers中的值传递自定义标头

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM