1

Asp.NetMVC4を使用してWebサービスをプログラミングしています。クライアントにWinFormsを使用しています。アイテムのリストを返すことができるSearchControllerを実装しました。

[HttpGet]
public IEnumerable<Shared.Item> ByTag(string search)
{
    ModelDbContext db = ModelDbContext.Current;
    db.Items.Load();
    //find some items....
    return itemList;
}

私はそれをこのように呼んでいます:

public Task<IEnumerable<Item>> SearchByTag(string tag)
        {

            client.BaseAddress = serviceAdress;
            var getStuffCall=client.GetAsync("Search/ByTag/" + tag);
            var r=getStuffCall.ContinueWith(
                t =>t.Result.IsSuccessStatusCode? (t.Result.Content.ReadAsAsync<IEnumerable<Item>>().Result):new List<Item>()
                );
            return r;
        }

これは正常に機能します。次に、アイテムもサーバーにアップロードしたいと思います。問題は、私のタイプItemが構造化されており、ファイルのリストと写真のリストも含まれていることです。私が理解している限り、これはjson-objectでは機能しません。または、ファイルや画像をなんとかしてラップ/エンコードできますか?

4

2 に答える 2

1

WinFormsからは、WebClientを使用することをお勧めします。これにより、マルチパートフォームをサーバーにPOSTできます。

HTTPは実際にはファイル転送用に設計されていないことを覚えておいてください。したがって、プッシュするファイルが大量にある場合は、それを考慮してください。

最後に、コントローラーで次のようなことを行います。ファイルPOSTを受け入れる方法

そこにはいくつかの関連するリンクといくつかの良いサンプルがあります。

これがもう少し役立つことを願っています。

于 2012-09-07T16:28:40.350 に答える
0

自分でたくさんのコードを書くか、UploadifyなどのjQueryプラグインを使用する必要があります。この理由は、XMLHttpRequestがAjaxを介したファイルのエンコード/アップロードを許可しないためです。このプラグインは、いくつかの既知の回避策/解決策/フェイルオーバーを使用して、プラグインを機能させます。

これが適切な場所にあると、2つの呼び出しを行うことを検討できます。1つはオブジェクトに対して、もう1つはサーバーにプッシュするファイル/イメージに対してです。

乾杯。

于 2012-09-06T15:58:21.937 に答える