Nav*_*vap 12 odata asp.net-web-api
我想创建oData控制器来上传文件
FileDto
========================= Http请求操作==================
•GET:〜/ Files({id})
Content-Type: application/json
Result: FileDto without Content
Run Code Online (Sandbox Code Playgroud)
•GET:〜/ Files({id})
Content-Type: application/octet-stream
Result: Stream of the File only
Run Code Online (Sandbox Code Playgroud)
•POST:〜/ Files
Content-Type: ?
Body: FileDto with Content
Result: FileId
Run Code Online (Sandbox Code Playgroud)
当与OData结合时,我不确定如何实现这一目标.
提前致谢
本页介绍如何创建 oDataController。
1)要在项目上安装软件包,请打开控制台管理器并输入以下内容:
Install-Package Microsoft.AspNet.Odata
Run Code Online (Sandbox Code Playgroud)
2)打开你的方法,WebApiConfig.cs在Register方法中添加以下代码:
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<FileDto>("File");
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: null,
model: builder.GetEdmModel());
Run Code Online (Sandbox Code Playgroud)
3)创建您的 oDataController 替换yourDataSourceHere以使用您自己的类:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
OBS:为了测试这个解决方案,我更改了 的FileDto属性Content。更具体地说,它是类型!从Stream到byte[]。将内容发布为 Base64 字符串。
| 归档时间: |
|
| 查看次数: |
904 次 |
| 最近记录: |