似乎向 RestRequest 添加文件不起作用。
ResponseStatus 设置为错误。
response.Error 消息是“要写入流的字节数超过了指定的 Content-Length 字节大小。”
在写入流之前必须更新内容长度。
很可能对 Content-Length 的更改以解决 .NET 的问题没有使用文件进行测试,并且标头设置不正确。 谢谢你的报告。
使用 jonfuller 的最新更改再次尝试此操作,并告诉我它是否仍然无法正常工作
我相信这会得到解决。 如果没有,请测试并通知。
我认为这与另一个错误 #769 和 #742 相关,让我修复它,我们会看看会发生什么。 内容长度发生了一些事情。
有这方面的消息吗?
凹凸 - 似乎仍然是一个问题
是的,我也有这个问题,即使回到 105.1.0 也没有帮助
还是没有解决。
我在使用较新版本的 restsharp 时遇到了类似的问题
使用时
req.AddFile("call[picture_attributes][file]", (s) => imageStream.CopyTo(s), GetRandomFileName("jpg"), "image/jpeg");
它不适用于较新的版本
但如果我使用
req.AddFile("call[picture_attributes][file]", imageStream.GetBytes(), GetRandomFileName("jpg"), "image/jpeg");
和
public static byte[] GetBytes(this Stream s)
{
using (var ms = new MemoryStream())
{
s.CopyTo(ms);
return ms.ToArray();
}
}
有用。
因此,通过使用 imageStream.CopyTo 使用流在发送 byte[] 时不起作用
这是我解决此错误的解决方案:
var req = GetRestRequest("Upload", Method.POST, null);
//req.AddFile("file",
// (s) => {
// var stream = input(imageObject);
// stream.CopyTo(s);
// stream.Dispose();
// },
// fileName, contentType);
req.Files.Add(new FileParameter {
Name = "file",
Writer = (s) => {
var stream = input(imageObject);
stream.CopyTo(s);
stream.Dispose();
},
FileName = fileName,
ContentType = contentType,
ContentLength = contentLength
});
RestRequest.AddFile 还没有准备好用于 .NET Core 吗? 我看到接口上的 AddFile 方法周围有一个 #if FRAMEWORK 编译器指令。 我认为@bcabrera解决方法适用于我的用例,但单元测试将是一个挑战。
.NET Core 目前还没有版本。 查看未解决的问题以监控进度。
最有用的评论
这是我解决此错误的解决方案: