1

我正在使用 Asp.Net MVC4 编写 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 对象。或者我可以以某种方式包装/编码我的文件和图片吗?

4

2 回答 2

1

在 WinForms 中,您可能想要使用WebClient,它允许您将多部分表单发布到服务器。

请记住,HTTP 并不是真正为文件传输而设计的,所以如果您有大量文件要推送,请考虑一下。

最后在控制器上,您将要执行以下操作:如何接受文件 POST

那里有几个相关链接和一些很好的示例。

希望这会有所帮助。

于 2012-09-07T16:28:40.350 回答
0

您将不得不自己编写一堆代码,或者使用诸如Uploadify之类的 jQuery 插件。原因是 XMLHttpRequest 不允许通过 Ajax 编码/上传文件。该插件使用几种已知的解决方法/解决方案/故障转移来使其适合您。

有了这个,您可以考虑进行两次调用,一次调用您的对象,一次调用您希望推送到服务器的文件/图像。

干杯。

于 2012-09-06T15:58:21.937 回答