2011-12-05 3 views
1

클래스 파일에 파일을 보유하고 싶습니다. 첨부 파일 사용자 정의 컨트롤을 작성했습니다.클래스에서 파일을 보관하는 가장 좋은 방법

업로드 제어로 파일을 업로드 한 후 SharePoint에 파일을 업로드하기 전에이를 클래스에 보유하고 싶습니다.

사용자가 둘 이상의 파일을 업로드 할 수 있습니다.

사용자가 save 버튼을 클릭 한 후에 만 ​​모든 파일 및 기타 데이터, 파일을 SharePoint에 저장하고 다른 데이터를 데이터베이스에 저장합니다. 여기

내가 그것을 어떻게

public class Document : 
    { 
     public string documentName, documentPath, spServerURL, spDocumentLibraryURL; 
     public DateTime lodegmentDate; 
     public System.Web.HttpPostedFile postedFile; 
    } 
을 을 처리해야

내 수업인가? httpPostedFile을 사용해도 되나요? 업데이트하는 동안 SPFilehttpPostedFile으로 변환 할 수 있습니까?

+0

"파일 보관"이란 무엇을 의미합니까? – Oded

+0

여러 개의 파일을 저장할 계획이라면 HttpPostedFile (또는 파일을 저장할 수있는 다른 객체)의 인스턴스를 두 개 이상 사용해야합니다. – Shai

+0

'InputStream'이 Session에 저장되는 것을 좋아하지 않을 것이라고 생각합니다. 대신에'Document'에 저장하는'byte []'에 스트림을 저장하십시오. –

답변

1

문서를 메모리에 보관하는 것은 웹 서버 램을 효율적으로 사용하지 못합니다. 임시 데이터베이스 또는 파일 공유에 저장하는 것이 더 좋습니다 ...

그러나 피할 수 있으면 직접 작성하지 않는 것이 좋습니다. Telerik의 RadUpload 컨트롤을 살펴보면 60 일 평가판까지 제공합니다.

+0

고마워요 !!! – kevin

2

우리가 처리하는 방법은 파일을 업로드 할 때 GUID를 기반으로하는 임시 파일 이름과 함께 잘 알려진 디렉토리에 저장됩니다. 임시 파일 이름과 원래의 업로드 된 파일 이름은 우리 클래스의 FileDetails 목록에 저장됩니다. 그런 다음 우리 클래스는 페이지의 ViewState에 직렬화되지만 세션 상태로 저장 될 수도 있습니다 (사용자가 여러 페이지를 열거 나 동일한 로그인으로 여러 컴퓨터에 사인하는 경우에는 권장하지 않습니다).

저장 버튼을 누르면 클래스의 FileDetails 목록을 반복하고 임시 디렉토리에서 각 파일을 검색 한 다음 sharepoint (또는 어디로 가야하는지)로 보냅니다.

또한 업로드 된 파일 목록을 사용자가 볼 수 있도록 그리드에 바인딩합니다. 사용자가 업로드 된 파일 목록을 볼 수 있도록하고, 제거하려는 경우 해당 파일을 처리하기 전에 확인한 그리드 (삭제 된) 상자를 체크 할 수 있습니다. 파일.

이 프로세스는 압축 파일의 자동 압축 해제를 지원할 수도 있습니다. 업로드 된 파일이 압축 된 것을 감지하면 임시 디렉토리에 각 파일의 압축을 풀고 파일 목록에 각 파일의 항목을 추가 할 수 있습니다 클래스. 이는 사용자에게 큰 시간을 절약 할 수 있습니다.

+0

HttpPostedFile 대신 Stream을 사용할 수 있습니까? – kevin

+0

세션 상태에 저장 될 클래스에는 Stream 또는 HttpPostedFile을 저장하면 안됩니다. 웹 서버에서 파일을 디스크로 추출하면 훨씬 쉽게 시간을 가질 수 있습니다. –

+0

고마워, 지금 해봐. – kevin

관련 문제