簡體   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