업데이트: 이 작동 하지만 의견에서 설명 하는 중요 한 제한이 있다. 아직도 일부 보이며에 유용할 수 있습니다..
업데이트 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(); } |