빠른 & 쉬운: 이벤트 수신기를 통해 SharePoint 개체 모델을 사용 하 여 업로드 된 파일 이름 바꾸기

업데이트: 이 작동 하지만 의견에서 설명 하는 중요 한 제한이 있다. 아직도 일부 보이며에 유용할 수 있습니다..

업데이트 2: 현재 프로젝트 내에서, 사용자는 항상 문서 업로드. 결과적으로, MS 워드에 실행 하 고 파일에 그것은 개명 되었다 생각 문제에 실행 하지 않는. 나는 문제로 실행 했, "파일이 다른 사용자에 의해 수정 된" 이 간단한 세마포 형식 플래그를 통해 해결. 사용자가 메타 데이터 필드 기본값에서 뭔가 다른 변경 해야. itemupdated() 수신기 모양과 거기 유효한 값에 대 한 이름 바꾸기를 실제로 수행 하기 전에 그 이후, 난 아무 문제 없. 귀하의 마일리지가 다를 수 있습니다..

나는 특정 명명 규칙을 준수 하는 특정 문서 라이브러리에 업로드 한 파일의 이름을 변경 하려면 클라이언트 요구 사항. API 이름 바꾸기 "를 제공 하지 않습니다.()" 메서드. 대신, 우리를 사용 하 여 "MoveTo(…)". 여기는이 코드의 최소한의 비트:

 공용 재정의 void ItemAdded(SPItemEventProperties 속성)
        {
            SPFile f = 속성.ListItem.File;

            f.MoveTo(속성입니다.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

만 까다로운 비트는 "속성. ListItem.ParentList.RootFolder.Url ". MoveTo() 메서드는 URL 필요. 그 으깬 문자열 포인트를 내게 내 현재 문서 라이브러리의 루트 폴더에. 이 이벤트 수신기 내에 하드 코딩 하지 않아도 날 수 있습니다..

이것은 똑같은 않습니다 더 유용한 버전, 하지만 파일의 이름을 "제목"에 할당 합니다:

 공용 재정의 void ItemAdded(SPItemEventProperties 속성)
        {
            DisableEventFiring();

            // 파일 자체의 이름은이 항목의 제목을 할당합니다.
 // 참고: 이 할당 파일 자체를 수정 하기 전에 자리를 차지할 해야 합니다..
 // 업데이트 호출() SPFile에서 속성 무효화 것
 // 어떤 의미.  "제목에 대 한 업데이트" 실패 하는 변경할 때까지 (그리고 업데이트() 전화)
 // 파일 이름 변경 앞 이동.
            속성입니다.ListItem["제목"] 속성 =.ListItem.File.Name;

            속성입니다.ListItem.Update();

            SPFile f = 속성.ListItem.File;

            // 파일의 확장명을.  우리 나중에 필요.
 문자열 spfileExt = 새로운 내용 FileInfo(f.Name).확장;

            // 파일의 이름을 목록 항목의 ID로와 파일 확장명을 사용 하 여 계속
 // 그것은 그대로 그 부분.
            f.MoveTo(속성입니다.ListItem.ParentList.RootFolder.Url +
                "/" + 속성입니다.ListItem["ID"] + spfileExt);

            // 이동 범.
            f.Update();

            EnableEventFiring();
        }

4 "에 대한 생각빠른 & 쉬운: 이벤트 수신기를 통해 SharePoint 개체 모델을 사용 하 여 업로드 된 파일 이름 바꾸기

  1. 이름 없음
    또한, 당신은 word에서이 작업을 수행 하는 경우, 그것은 오류를 반환 하 고 파일이 존재 하지 않는 말. 새로운 URL에 대 한 얘기 하지. 아직이 문제를 해결 방법을 발견 했다.
    회신
  2. 폴 Galvin
    그것을 지적 주셔서 감사. 나도 그 하나에 대 한 답변을 모른다 … 그것을 관리 하는 방법을 보고 재미 있을 것 이다.
    RE: 비동기 & 리디렉션
    경우는 ItemAdding 이동 됩니다 그것을 해결 하는 것이 궁금. 그건 큰 구멍.
    감사!
    –Paul
    회신
  3. Nadeem Mitha
    파일을 비동기적으로 이동 되 면 때문에, 이동 커밋되기 전에 EditForm.aspx 진단트리로 이동 되 고의 가능성이 있다 (그리고 그 나쁜). 이런 경우 MoveTo 선 전에 자 코드 표시 됩니다.. 난 아직도 옆 사용자 지정된 편집 양식을 사용 하 여 그 문제에 대 한 무엇을 할 수 있습니다 생각 하지 않았습니다..
    회신

회신을 남겨 주세요 Nadeem Mitha 답장 취소

귀하의 이메일 주소는 공개되지 않습니다. 필요 입력 사항은 표시되어 있습니다 *