2017-02-14 7 views
0

Umbraco 7 사이트에서 일부 작업을 시작했습니다. 사이트에 사용자 지정 미디어 유형이 있습니다. 드래그 앤 드롭을 포함하여 미디어를 추가하고이 사용자 정의 유형을 선택하면 추가 된 파일의 전체 경로/URL이 아무 곳에 나 저장되지 않는 것처럼 보입니다.Umbraco 7 사용자 지정 미디어 유형 끌어서 놓기 기능

MediaService.Saved 이벤트에 리스너를 추가했으나 실행 중입니다.이 메서드 내에서 사용할 수있는 것으로 보이는 모든 정보는 파일 자체가 아닌 파일의 ID와 이름입니다.

"umbracoFile"속성이 자동으로 채워질 것으로 예상했지만 실제로 나타나지 않습니다. [별칭이 "umbracoFile"인 속성을 갖기 위해 내 사용자 지정 미디어 유형을 편집하려고했지만 백엔드가 충돌하게됩니다.]

어쨌든 파일의 url/path를 가져 오거나 Umbraco가 "umbracoFile"속성을 설정하게 만들려합니까?

답변

0

로버트의 대답 덕분에 결국 뭔가 효과가있었습니다. 상당히 해킹되었지만 작동하는 것처럼 보이므로 다른 사람에게 도움이 될 수 있도록 여기에 남겨 두겠습니다.

나는 다른 사람이 그것을 사용하는 것이 좋습니다 수는 없지만, 그것은 어디서부터 시작하는 사람들에게 아이디어를 줄 수 있도록이 감가 상각 이벤트 핸들러와 개인 변수를 설정하는 반사를 사용하는

참고 :

public void MediaService_Creating(IMediaService sender, NewEventArgs<IMedia> e) 
    { 
     int i = 0; 
     Type t = e.Entity.GetType(); 
     FieldInfo[] fields = t.GetFields(BindingFlags.NonPublic | BindingFlags.Instance); 
     FieldInfo field = fields.First(x => x.Name == "_contentType"); 

     MethodInfo findMediaTypeByAlias = ApplicationContext.Current.Services.MediaService 
      .GetType().GetMethod("FindMediaTypeByAlias", BindingFlags.NonPublic | BindingFlags.Instance); 

     IMediaType mediaType = (IMediaType)findMediaTypeByAlias.Invoke(
      ApplicationContext.Current.Services.MediaService, 
      new object[] { Constants.Conventions.MediaTypes.Image }); 

     field.SetValue(e.Entity, mediaType); 
     field = fields.First(x => x.Name == "ContentTypeBase"); 
     field.SetValue(e.Entity, mediaType); 

     i = e.Entity.ContentTypeId; 
    } 

기본을 전제는 미디어 유형이 생성되는 동안 미디어 유형을 이미지로 변경하는 것입니다. 이런 방식으로 이미지 미디어 유형에 대한 추가 속성이 추가되고 자동으로 채워집니다. 사용자 지정 미디어 유형의 속성이 이미지 미디어 유형 속성 중 하나 (예 : umbracoFile)와 별칭을 공유하면 해당 속성 값이 자동으로 채워 지므로 필요에 따라 모든 저장/저장된 이벤트 리스너에서 사용할 수 있습니다.

1

폴더 탐색기 컨트롤 (폴더의 미디어 섹션이나 미디어 선택기 대화 상자에서 사용)에서 끌어서 놓기 작업을 수행하면 Umbraco는 업로드 영역으로 끌어다 놓는 파일 형식을 검사하여 그 위에는 최상의 미디어 유형이 결정됩니다. 기본적으로 미디어 유형이 Image 인 알려진 이미지 유형 (png, jpg, gif 등)의 경우 미디어 유형이 File 인 항목이 자동으로 할당됩니다.

MediaService.Saved 이벤트에 연결하면 Umbraco Media에서 해당 파일을 나타내는 개체에 액세스 할 수 있지만 위의 설명에 따라 특정 파일 형식으로 저장되어 있습니다 (7.5에서 조금 변경되었습니다). .9 - 아래 주 참조). 자신의 미디어 유형을 활성화하고 끌어서 놓기를 설정하려면 조금 더 깊게 파고 들어야합니다. 7.5.9의로,이는 Umbraco의 매우 최신 버전에 적용 - 당신의 마일리지가 다를 수 있습니다 https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/Editors/MediaController.cs#L626-L638

참고 :

이 한 번보세요.

선호하는 미디어 유형으로 파일을 업로드 할 때 게시물 데이터의 contentTypeAlias 매개 변수를 설정해야 할 필요가 있습니다.이 경우 자신 만의 폴더 브라우저 데이터 형식 버전을 만들어야 할 수 있습니다.

+0

고마워요. 당신의 대답은 저의 길을 이끌어 냈습니다. 비록 당신이 마음에 두었던 것인지 잘 모르겠지만. –

+0

당신이 당신의 목적지에 도착했을 때, 모든 좋은 :) –