3

ファイル フィールドの名前が「upload」という単語にハード コードされているという点で、ServiceStack の PostFileWithRequest<> メソッドに問題があります。

データ ストリームの一部

Content-Disposition: form-data;name="upload";filename="Julie.mp3"

これは、ファイル ServiceClientBase.cs の 407 行目からのものです。

         stream.Write("Content-Disposition: form-data;name=\"{0}\";filename=\"{1}\"{2}{3}".FormatWith(new object[] { "upload", fileName, text, text }));

これは仮想メソッドに含まれていますが、新しいクラスにアクセスできない他のメソッドがあるため、派生クラスでそれを変更する方法がわかりません。

public virtual TResponse PostFileWithRequest<TResponse>(string relativeOrAbsoluteUrl, Stream fileToUpload, string fileName, object request)

何か案は?

form-data;name の名前は構成可能で、ハードコードされていない必要があるため、これは私にはバグのように見えます。

私の場合、特定の API を使用するには、ファイルを「File」という名前にする必要があります。

クリス

4

1 に答える 1

1

ServiceStack (v4 ではありますが)にプル リクエストを送信しました。これは承認され、次のバージョン 4.0.14 に含まれます。

これにより、オプションのパラメーター がメソッドに追加fieldNamePostFileWithRequest<TResponse>れ、 にこだわる代わりにフィールド名を指定できるようになりますupload

したがって、メソッドの新しいシグネチャは次のとおりです。

public virtual TResponse PostFileWithRequest<TResponse>(string relativeOrAbsoluteUrl, Stream fileToUpload, string fileName, object request, string fieldName = "upload")
于 2014-03-17T22:50:17.793 に答える