2014-07-08 3 views
2

J'ai besoin d'aide, je suis en train de développer une API Umbraco qui créera des médias par programmation à partir d'un site Web tiers.Umbraco Media Services Créer des médias

J'utilise les éléments suivants pour créer les médias

public HttpResponseMessage CreateMedia() 
    { 
     var mediaService = Services.MediaService; 

     using (WebClient client = new WebClient()) 
     { 
      Stream s = client.OpenRead("http://karl.media.local/Uploads/ef093845-41dd-4620-  b220-1b346a5f9b2e.jpg"); 

      using (MemoryStream ms = new MemoryStream()) 
      { 
       s.CopyTo(ms); 

       var mediaImage = mediaService.CreateMedia("test4", 1152, "Image"); 
       mediaImage.SetValue("umbracoFile", "test4", ms); 
       mediaService.Save(mediaImage); 
      } 
     } 

     var response = Request.CreateResponse(HttpStatusCode.OK); 

     response.Content = new StringContent("ExternalMediaCreate", Encoding.UTF8, "application/json"); 
     return response; 
    } 
} 

Je reçois l'erreur suivante sur cette ligne mediaImage.SetValue ("umbracoFile", "test4", ms);:

<Error> 
    <Message>An error has occurred.</Message> 
    <ExceptionMessage> 
     Length cannot be less than zero. Parameter name: length 
    </ExceptionMessage> 
</Error> 

Toute aide serait appréciée,

Merci à l'avance

Répondre

7

fixe, la question.

J'avais besoin de charger le fichier dans un flux de fichiers afin que je puisse accéder au nom.

public HttpResponseMessage CreateMedia() 
     { 
      var mediaService = Services.MediaService; 
      var request = WebRequest.Create("http://karl.media.local/Uploads/ef093845-41dd-4620-b220-1b346a5f9b2e.jpg"); 
      var webResponse = request.GetResponse(); 
      var responseStream = webResponse.GetResponseStream(); 

      if (responseStream != null) 
      { 
       var originalImage = new Bitmap(responseStream); 

       var path = HttpContext.Current.Server.MapPath("~/_tmp/ef093845-41dd-4620-b220-1b346a5f9b2e.jpg"); 


       originalImage.Save(path, ImageFormat.Jpeg); 


       FileStream fileStream = new FileStream(path, FileMode.Open); 
       var test = fileStream.Name; 


       var mediaImage = mediaService.CreateMedia("test4", 1152, "Image"); 
       mediaImage.SetValue("umbracoFile", test, fileStream); 
       mediaService.Save(mediaImage); 

       responseStream.Dispose(); 
       webResponse.Dispose(); 
       originalImage.Dispose(); 
      } 


      var response = Request.CreateResponse(HttpStatusCode.OK); 

      response.Content = new StringContent("ExternalMediaCreate", Encoding.UTF8, "application/json"); 
      return response; 
     } 
Questions connexes