我正在使用Asp.Net MVC4编写Web服务。我正在为客户端使用WinForms。 我已经实现了一个能够返回Items列表的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。或者我可以以某种方式包装/编码我的文件和图片吗?
答案 0 :(得分:1)
从WinForms,您可能会想要使用WebClient,这允许您将多部分表单POST到服务器。
请记住,HTTP实际上并不是为文件传输而设计的,所以如果你有一大堆要推送的文件,请考虑一下。
最后在控制器上,您将要执行以下操作:How To Accept a File POST
有一些相关的链接和一些好的样本。
希望这会有所帮助。
答案 1 :(得分:0)
你将不得不自己编写一堆代码,或者使用jQuery插件,例如Uploadify。原因是XMLHttpRequest不允许通过Ajax编码/上传文件。这个插件使用了几个已知的解决方案/解决方案/故障转移,使它适合您。
有了这个,您可以考虑拨打两个电话,一个用于您的对象,另一个用于您希望推送到服务器的文件/图像。
干杯。