【问题标题】:Media Resource Support for OData POST in Web APIWeb API 中 OData POST 的媒体资源支持
【发布时间】:2014-06-19 21:26:06
【问题描述】:

我想创建 oData 控制器来上传文件

文件目录

  1. 文件ID
  2. NameWithExtension(类型:字符串)
  3. 元数据(类型:列表)
  4. 内容(类型:流)

=========================Http 请求操作==================

• 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:~/文件

Content-Type: ?
Body: FileDto with Content
Result: FileId

不确定与 OData 结合如何实现这一点。

提前致谢

【问题讨论】:

    标签: asp.net-web-api odata


    【解决方案1】:

    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) 创建您的 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);
        }
    }
    

    OBS:为了测试这个解决方案,我更改了FileDto 的属性Content。更具体地说,它是类型!从Streambyte[]。将内容发布为 Base64 字符串。

    【讨论】:

      猜你喜欢
      • 2012-05-23
      • 2017-10-20
      • 2016-11-26
      • 2021-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      相关资源
      最近更新 更多