2014-05-03 6 views
12

मैं Odata फ़ाइलोंमीडिया संसाधन समर्थन

अपलोड करने के लिए FileDto

  1. FileId
  2. NameWithExtension नियंत्रक बनाना चाहेंगे (प्रकार: स्ट्रिंग)
  3. मेटाडाटा (प्रकार: सूची)
  4. सामग्री (प्रकार: स्ट्रीम)

========================= एचटीपी अनुरोध कार्रवाई ==================

• प्राप्त: ~/फ़ाइलें ({आईडी})

Content-Type: application/json 
Result: FileDto without Content 

• प्राप्त: ~/फ़ाइलें ({आईडी})

Content-Type: application/octet-stream 
Result: Stream of the File only 

• पोस्ट: ~/फ़ाइलें

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

यह सुनिश्चित नहीं है कि ओडाटा के साथ मिलकर मैं इसे कैसे प्राप्त कर सकता हूं।

अग्रिम धन्यवाद

उत्तर

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) अपने 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 बदल दिया है। अधिक विशेष रूप से, यह प्रकार है! Stream से byte[] से। सामग्री को बेस 64 स्ट्रिंग के रूप में पोस्ट किया गया।

संबंधित मुद्दे