2011-03-15 2 views
0

나는 파일 업로드 메커니즘을 사용하여 직원을위한 파일을 업로드하고 바이트 []로 변환하여 varBinary (Max)로 전달하여 데이터베이스에 저장합니다.파일 업로드 및 데이터베이스에서 읽기

이제 내가해야 할 일은 파일이 이미 직원 용으로 업로드 된 경우 테이블과 파일 이름에서 파일을 읽는 것입니다. 하나의 열만 파일을 저장할 수 있으며 VarBinary 유형입니다.

VarBinary 필드에서 모든 파일 정보를 가져올 수 있습니까?

다른 방법으로 알려주십시오.

답변

1

파일 이름을 저장하지 않으면 검색 할 수 없습니다.

(파일 자체가 파일 이름을 포함하지 않는 경우에 당신이 블롭의 내용을 구문 분석해야 할 것입니다.)

0

경우 파일의 이름 (및 파일의 부분이 아니다 파일에 대한 다른 데이터 바이트 데이터)를 나중에 사용해야하는 경우 해당 데이터도 저장해야합니다. 파일 이름에 대한 열을 추가하는 것이 좋습니다. 유형 (MIME 유형 또는 클라이언트의 브라우저 등으로 다시 전송하는 것과 같은 유형)과 크기에 대한 열을 추가하는 것이 좋습니다. 따라서 크기에 대한 열을 추가 할 필요가 없습니다. 이를 각 파일에 대해 즉석에서 계산하십시오 (파일 그리드를 표시 할 때 유용하며 그리드를 채우는 쿼리의 큰 BLOB 필드를 터치하지 않으려 할 때 유용합니다).

시스템 내부 식별을 위해 파일 이름을 사용하지 않도록하십시오. 사용자가 이름으로 파일을 검색하고 선택할 수있게하는 것은 괜찮습니다. 그러나 실제로 서버에 파일을 표시하도록 요청할 때 테이블에서 간단한 정수 기본 키를 사용하여 실제로 식별하는 것이 좋습니다. (부수적으로, 파일 이름 열에 고유 한 제한 조건을 두는 것이 좋습니다.)

파일을 사용자에게 표시하는 데 도움이 필요하면 시도한 방법을 사용하는 것이 좋습니다. 데이터베이스에서 이미지를 표시하는 경우에는 true입니다. 기본적으로 파일 ID를 쿼리 문자열 매개 변수로 받아 파일을 출력하는 리소스 (일반적으로 .aspx 페이지가 있지만 HttpHandler 일 수도 있음)가 있습니다.

이 리소스는 UI가 없으며 (Page 지시문을 제외한 .aspx에서 모든 것을 제거합니다.) 응답 헤더를 수동으로 조작합니다 (파일 형식에서 콘텐츠 형식을 설정하는 곳). 바이트 스트림을 작성합니다. 클라이언트에게 전달하고 응답을 종료합니다. 클라이언트의 관점에서 ~/MyContent/MyFile.aspx?fileID=123과 같은 것일 경우 이됩니다. 응답 헤더에 저장하기 위해 브라우저에 파일 이름을 제안 할 수 있습니다.이 파일의 저장된 이름을 사용하는 것이 좋습니다.

몇 년 전까지 만해도 주위에) 이미지로 이것을하는 방법에 관해서. 이미지 나 다른 종류의 파일 인 경우 서버의 관점과 본질적으로 차이가 없음을 기억하십시오. 모든 서버는 응답 헤더에 유형을 보내고 파일 바이트를 클라이언트에 씁니다. 클라이언트가 파일을 처리하는 방법은 브라우저에 달려 있습니다. 대다수의 경우 브라우저는 무엇을해야할지 (이미지를 표시하고, 플러그인을 통해 PDF를 표시하고 .doc를 저장하는 등) 알 수 있습니다.