2011-10-19 4 views
0

내가 프로그래밍 아래SharePoint 2007 : 프로그래밍 방식으로 이진 파일을 문서 라이브러리에 업로드하는 방법?

셰어 포인트 2007에서 문서 라이브러리에 항목을 작성하는 문제가 발생하는 것은, 내 코드 조각 아마도 당신 수도 내 오류가 무엇인지 지적 할 수 :

SPSecurity.RunWithElevatedPrivileges(delegate() 
{ 
    using (SPSite site = new SPSite(_url)) 
    { 
     using (SPWeb web = site.OpenWeb()) 
     { 
      SPList customList = web.Lists["Test1"]; 
      foreach (SPListItem ltItem in customList.Items) 
      { 
       if (ltItem.Attachments != null && ltItem.Attachments.Count > 0) 
       { 
        //Get Test1 File Collection 
        SPFolder folder = web.GetFolder(ltItem.Attachments.UrlPrefix); 
        SPFileCollection fileColl = folder.Files; 

        //Get binary data of attachment 
        SPFile file = ltItem.ParentList.ParentWeb.GetFile(ltItem.Attachments.UrlPrefix + ltItem.Attachments[0]); 
        byte[] fileData = file.OpenBinary(); 

        //Get Relative URL of attachment destination 
        string destFile = fileColl.Folder.Url + "/" + file.Name; 

        web.AllowUnsafeUpdates = true; 
        //Add attachment into Document Library 
        SPDocumentLibrary docLib = (SPDocumentLibrary)web.Lists["Test2"]; 
        SPFile file2 = docLib.RootFolder.Files.Add(destFile, fileData, true); 
        file2.Item.Update(); 
        web.AllowUnsafeUpdates = false; 
       } 
      } 
     } 
    } 
}); 

내가 공격 " 이 코드 file2.Item.Update();의 링크에서 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다."

고맙습니다.

답변

1

왜 destFile을 그렇게 설정합니까? 첨부 파일의 이름은 충분하다 .. 요구 사항은 당신이 폴더 필요하지만, 당신이 그것을에 파일을 추가하기 전에 폴더를 만들 거라고 말한다면

string destFile = file.Name; 

그것은 첨부 파일의 상대 URL을 추가하기 만의 .

관련 문제