由于restRequest.AddFile((FileParameter)file);在較新版本的 restsharp 中不存在多載,您可以像這樣定義自己的擴展方法:
using RestSharp;
public static class RestRequestExtensions
{
public static RestRequest AddFile(this RestRequest req, FileParameter f)
{
return req.AddFile(f.Name, GetBytes(f.GetFile()), f.FileName, f.ContentType);
}
private static byte[] GetBytes(Stream input)
{
byte[] buffer = new byte[16 * 1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
}
另一種方式:
public static class RestRequestExtensions
{
public static RestRequest AddFile(this RestRequest req, FileParameter f)
{
return req.AddFile(f.Name, ()=>f.GetFile(), f.FileName, f.ContentType);
}
}
uj5u.com熱心網友回復:
我在使用 api 集成時也遇到了這個問題(restsharp 108.0.1)。通過將我的檔案添加到請求正文中,我能夠解決這個問題。
byte[] fileBytes = File.ReadAllBytes({your filePath});
//request setup...
restRequest.AddBody(fileBytes, {your fileType});
uj5u.com熱心網友回復:
已被@SergAddFile(FileParameter)標記為已注釋,因此除非再次洗掉修飾符,否則在以后的版本中將無法使用。internalrequest.AddFile(fileParameter);internal
至于 的Action<Stream> Writer屬性FileParameter,現在變成 了Func<Stream> GetFile。要指定你自己的GetFile,你可以呼叫這個擴展方法
AddFile(parameterName, getFile, fileName, contentType);
這將呼叫internal AddFile(FileParameter)使用指定的GetFile:
RestRequest.AddFile(FileParameter.Create(name, getFile, fileName, contentType))
舊版本是Action<Stream>庫將傳遞Stream給您的地方Writer,現在您需要Stream通過GetFile.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/498124.html
