Restsharp: RestRequest.AddFile funktioniert nicht

Erstellt am 1. Nov. 2010  ·  13Kommentare  ·  Quelle: restsharp/RestSharp

Es scheint, als ob das Hinzufügen einer Datei zu RestRequest nicht funktioniert.

ResponseStatus wird auf Error gesetzt.

die Antwort.Fehlermeldung lautet "Bytes, die in den Stream geschrieben werden sollen, überschreiten die angegebene Inhaltslänge-Bytegröße."

müssen Sie die Inhaltslänge aktualisieren, bevor Sie in den Stream schreiben.

bug

Hilfreichster Kommentar

Dies war meine Lösung, um diesen Fehler zu umgehen:

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

Alle 13 Kommentare

höchstwahrscheinlich wurden die Änderungen an Content-Length zur Umgehung von .NET nicht mit Dateien getestet und der Header wurde nicht richtig eingestellt. danke für den Bericht.

versuche es noch einmal mit den neuesten Änderungen von jonfuller und sag mir, ob es immer noch nicht funktioniert

ich glaube das ist gelöst. bitte testen und wenn nicht benachrichtigen.

Problem zurückgekehrt.
In Version 105.2.3 (aktuell stabil auf Nuget) mit einer Dateigröße von ~3,5 MB.

Nach dem Downgrade auf 105.1.0 funktioniert alles einwandfrei.

Es gibt einen ähnlichen Beitrag bei StackOverflow (nicht meiner).

Ich denke, das hängt mit einem anderen Fehler #769 und #742 zusammen. Lassen Sie mich das beheben und wir werden sehen, was passiert. Etwas ist mit der Inhaltslänge passiert.

Gibt es dazu Neuigkeiten?

Beule - scheint immer noch ein Problem zu sein

Ja, ich habe auch Probleme damit, selbst ein Zurückgehen auf 105.1.0 hat nicht geholfen

Immer noch nicht gelöst.

Ich habe ein ähnliches Problem mit neueren Versionen von restsharp
beim Benutzen
req.AddFile("call[picture_attributes][file]", (s) => imageStream.CopyTo(s), GetRandomFileName("jpg"), "image/jpeg");

In neueren Versionen funktioniert es nicht

aber wenn ich benutze
req.AddFile("call[picture_attributes][file]", imageStream.GetBytes(), GetRandomFileName("jpg"), "image/jpeg");

mit

    public static byte[] GetBytes(this Stream s)
    {
        using (var ms = new MemoryStream())
        {
            s.CopyTo(ms);
            return ms.ToArray();
        }
    }

Es klappt.

Die Verwendung eines Streams mit imageStream.CopyTo funktioniert also nicht, während das Senden von byte[] funktioniert

Dies war meine Lösung, um diesen Fehler zu umgehen:

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

Ist RestRequest.AddFile nicht bereit für .NET Core? Ich sehe, dass es eine #if FRAMEWORK-Compilerdirektive um die AddFile-Methoden auf der Schnittstelle gibt. Ich denke, der @bcabrera- Workaround könnte für meinen Anwendungsfall funktionieren, aber der

Es gibt noch keine Version für .NET Core. Sehen Sie sich offene Probleme an, um den Fortschritt zu überwachen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

Taher-Assad picture Taher-Assad  ·  5Kommentare

mwinder picture mwinder  ·  7Kommentare

AlexanderSchoenfeld picture AlexanderSchoenfeld  ·  3Kommentare

ChenJasonGit picture ChenJasonGit  ·  5Kommentare

captnrob picture captnrob  ·  3Kommentare