2012-03-24 5 views
2

관리자 양식을 작성하고 있습니다. 사용자는 PDF 파일을 업데이트 할 수도 있고 업데이트하지 않을 수도 있습니다.DALC에서 불필요한 파일 업로드 필드를 처리하는 방법?

string fileExt = System.IO.Path.GetExtension(regFormUpload.FileName); 
if (regFormUpload.HasFile) 
{ 
    if (string.Equals(fileExt, ".pdf", StringComparison.OrdinalIgnoreCase)) 
    { 
     Stream pdfFileStream = regFormUpload.PostedFile.InputStream; 
     fileData = new byte[regFormUpload.PostedFile.ContentLength]; 
     pdfFileStream.Read(fileData, 0, regFormUpload.PostedFile.ContentLength); 

     // Call DALC method with uploaded file(s) params 
    } 
    else 
    { 
     regFormCustVal.IsValid = false; 
    } 
} 
else 
{ 
    // Call DALC method indicating "null" for non-uploaded files(s)??? 
} 

저장 프로 시저 DALC에 널 (null)을/전달하는 방법이 있나요 : 그가 내 양식에 내가 그것을 처리하는거야 않는 경우 다음과 같이 코딩? SQL Server에 varbinary (max) 유형으로 저장됩니다. 이전에는 누군가가 파일을 업로드했는지 여부에 따라 별도의 메서드를 코딩하는 데 사용되었지만 더 쉬운 방법이 있어야한다는 것을 알고 있지만 C# 구문이 나를 벗어났습니다.

UPDATE - 난 아직 여기에 대한 답을 얻지 않았다 2012년 5월 24일

. 내 DALC에서는 파일 (byte [])이 업로드되었는지 여부에 따라 여러 가지 DB 업데이트 메서드를 호출해야합니다. 이 문제를 해결할 여지가 있습니까? 두 개의 별도 파일 업로드 컨트롤이 있으며 둘 다 필수 필드가 아닙니다. 이것은 (2^2) 가능성을 설명하기 위해 최대 4 개의 개별 DB 업데이트 메소드를 코딩해야한다는 것을 의미합니다!

+1

"nullable byte array"로 정확히 무엇을 의미합니까? – BrokenGlass

+0

+1 질문 업데이트 : – IrishChieftain

+1

확장 프로그램이 ".PDF"인 경우 어떻게됩니까? – usr

답변

0

이 간단한 대답은 DB Add 메서드에 대한 네 가지 재정의 코드를 작성하는 것이 었습니다. 이것은 내가 처음에 피하려고했던 것이 었습니다. 이것을하는 더 우아한 방법을 보여주는 응답을받지 못했습니다.

1

Nullable Byte Array와 같은 것은 없으며 항상 Array를 null로 설정할 수 있습니다.

파일 업로드의 경우, 예제에서 FileUpload.PostedFile에 대한 설명이 제시하는 것처럼 할 수 있습니다.

업데이트 : 귀하의 DALC가 작동하지만 배열을 저장 프로 시저에 전달하는 방법을 모르면 배열이 null 일 때 DBNull.Value을 전달해야합니다.

업데이트 2 : DAL에서 배열을 null로 설정하기 때문에 DBNull.Value을 프로 시저에 전달해야합니다. 프로 시저를 호출 할 때

fileData = null; 

는 그런 다음 속성을 확인하거나 값 또는 DBNull.Value을 통과해야합니다. 방법은 this question을 참조하십시오.

+2

"nullable bytes of array"라고 말하면 "nullable bytes of array"라고 말합니다. –

+0

+1 질문 업데이트 : – IrishChieftain

+0

"암시 적으로 'System.DBNull'형식을 'byte []'로 변환 할 수 없습니다. – IrishChieftain

관련 문제