我想创建oData控制器来上传文件
FileDto
========================= Http请求操作================== < / p>
•GET:〜/ Files({id})
Content-Type: application/json
Result: FileDto without Content
•GET:〜/ Files({id})
Content-Type: application/octet-stream
Result: Stream of the File only
•POST:〜/ Files
Content-Type: ?
Body: FileDto with Content
Result: FileId
在与OData结合使用时,我不确定如何实现这一目标。
提前致谢
答案 0 :(得分:3)
This page解释了如何创建oDataController。
1)要在项目中安装软件包,请打开控制台管理器并输入:
Install-Package Microsoft.AspNet.Odata
2)打开您的WebApiConfig.cs
和Register
方法,添加以下代码:
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<FileDto>("File");
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: null,
model: builder.GetEdmModel());
3)创建替换yourDataSourceHere
的oDataController以使用您自己的类:
public class FileController : ODataController
{
[EnableQuery]
public IQueryable<FileDto> Get()
{
return yourDataSourceHere.Get();
}
[EnableQuery]
public SingleResult<FileDto> Get([FromODataUri] int key)
{
IQueryable<FileDto> result = yourDataSourceHere.Get().Where(p => p.Id == key);
return SingleResult.Create(result);
}
public IHttpActionResult Post(FileDto File)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
yourDataSourceHere.Add(product);
return Created(File);
}
}
OBS :为了测试此解决方案,我更改了FileDto
的属性Content
。更具体地说,它的类型!从Stream
到byte[]
。将内容发布为Base64字符串。