10

ファイルを投稿し、その投稿の一部としてデータを追加できるようにしたい。

ここに私が持っているものがあります:

            var restRequest = new RestRequest(Method.POST);

            restRequest.Resource = "some-resource";
            restRequest.RequestFormat = DataFormat.Json;

            string request = JsonConvert.SerializeObject(model);
            restRequest.AddParameter("text/json", request, ParameterType.RequestBody);

            var fileModel = model as IHaveFileUrl;

            var bytes = File.ReadAllBytes(fileModel.LocalStoreUrl);

            restRequest.AddFile("FileData", bytes, "file.zip", "application/zip");


            var async = RestClient.ExecuteAsync(restRequest, response =>
            {
                if (PostComplete != null)
                    PostComplete.Invoke(
                        new Object(),
                        new GotResponseEventArgs
                            <T>(response));
            });

ファイルは問題なく投稿されますが、データが存在しません。これは可能ですか?

[アップデート]

マルチパート ヘッダーを使用するようにコードを修正しました。

            var restRequest = new RestRequest(Method.POST);

            Type t = GetType();
            Type g = t.GetGenericArguments()[0];

            restRequest.Resource = string.Format("/{0}", g.Name);
            restRequest.RequestFormat = DataFormat.Json;
            restRequest.AddHeader("content-type", "multipart/form-data");

            string request = JsonConvert.SerializeObject(model);
            restRequest.AddParameter("text/json", request, ParameterType.RequestBody);

            var fileModel = model as IHaveFileUrl;

            var bytes = File.ReadAllBytes(fileModel.LocalStoreUrl);

            restRequest.AddFile("FileData", bytes, "file.zip", "application/zip");


            var async = RestClient.ExecuteAsync(restRequest, response =>
            {
                if (PostComplete != null)
                    PostComplete.Invoke(
                        new Object(),
                        new GotResponseEventArgs
                            <T>(response));
            });

まだ運がありません...何か指針はありますか?

4

2 に答える 2

3

私は専門家ではありませんC#が、Grails/Java でマルチパート リクエストに同じ原則を使用しました。

いくつかのポインタ (ServiceStack/C#)
マルチパート フォーム ポスト
MSDN MIME メッセージ
ServiceStack ファイル添付

Java 対応:
ファイルとデータを JSON として REST サービスに投稿する

これが役立つことを願っています。

于 2013-06-01T17:20:26.973 に答える