2009-09-10 5 views
1

저는 ASP.NET을 처음 사용합니다. 나는 ASP.NET 3.5 (2008 VS)과 함께 사이트를 개발하고 있어요, 그리고 내가하고 싶은 모든이가 :ASP.NET (3.5) 웹 페이지의 데이터베이스에서 이미지 표시

  1. 이 (내가는 FileUpload 컨트롤을 통해이 일을 해요)
  2. 서버에 이미지를 업로드 어떤 테이블에서 데이터베이스에 바이트 (바이트 [])를 저장하십시오.
  3. 사용자가 페이지를 호출하면 (예 : Index.aspx? id = 10), 테이블로 이동하여 id = 10 인 관련 행을 가져옵니다. 셀 중 하나에 바이트 [] 형식의 이미지가 있습니다.

  4. 이제 다른 이미지도있는 웹 페이지에서이 이미지를 표시하려고합니다.

나는이 작업을 수행하는 방법을 알아낼 수 없습니다 - 이미지 컨트롤 만 URL을 기대하고 내가 디스크에 이미지를 저장하지 않으 ..

모든 아이디어를 주 시겠어요? -Rick

답변

0
+0

위대한 답변, 감사 데이빗과 Canavar. 이것을 통해 생각한 후에 - 나는 번거 로움을 덜어 주면서 대신 파일 시스템을 사용해야하는지 궁금합니다. –

+0

@rick s : 파일 시스템이 더 쉬울 것이지만 데이터베이스 접근 방식에는 몇 가지 옵션이 있습니다. (1) 네트워크 환경에서 사용 권한에 대해 걱정할 필요가 없습니다. (2) (예 : 이미지 크기 조정, 효과 적용 등) (3) 응답 캐시 설정에 프로그래밍 방식으로 영향을 주어 반복 요청이 사용자 브라우저 캐시에서 제공되는 대신 귀하의 서버. –

2

당신은을 IHttpHandler 인터페이스를 구현하는 클래스를 작성해야합니다. 이 동작, 별도의 어셈블리를 일반화하려는 경우,

public class ImageHttpHandler : IHttpHandler 
{ 
    //code omitted 

    public bool IsReusable 
    { 
    get 
    { 
     return (false); 
    } 
    } 

    public void ProcessRequest(HttpContext context) 
    { 
     //GetImageUrl is implemented elsewhere 
     var imageURL = GetImageUrl(context.Request.Params["URL"]); 

     //GetImageContentFromDatabase returns a structure with MIMEType and Content properties 
     var imageData = GetImageContentFromDatabase(imageURL); 

     if(imageData != null) 
     { 
     context.Response.ContentType = imageData.MIMEType; 
     context.Response.BinaryWrite(imageData.Content); 
     } 
     else 
     { 
     context.Response.StatusCode = 404; 
     } 
    } 
} 

당신은 당신을 App_Code 디렉터리에이 클래스를 배치 할 수 있습니다 또는 : 이런 식으로 뭔가가 충분합니다.

당신은 다음과 같이 당신의 web.config 파일에서이 핸들러를 참조 할 수 있습니다

<system.web> 
    <httpHandlers> 
    <add verb="GET" path="*.imgx" type="ImageHttpHandler"/> 
    </httpHandlers> 
</system.web> 

이 모든 클래스 ImageHttpHandler에게 직접 연락해야합니다 확장 imgx와 파일에 대한 요청을 얻을 수 있음을 의미한다.

이것은 Cassini (Visual Studio Development Web Server)와는 잘 작동하지만 IIS 웹 사이트/가상 디렉터리를 추가로 변경해야합니다.

IIS MMC 스냅인으로 이동하여이 디렉터리의 속성에 액세스합니다. "가상 디렉터리"또는 "홈 디렉터리"탭에있는 구성 단추를 찾아야합니다. 일단 거기에 imgx를 응용 프로그램 확장으로 추가하고 실행 파일을 aspnet_isapi.dll로 설정합니다. 이 파일은 내 컴퓨터의 C : \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727에 있습니다. 간단하게 "모든 동사"를 선택하고 "파일 존재 확인"을 선택 취소하십시오.

웹 페이지에서 정의한 하이퍼 링크는 imgx 확장자를 사용해야합니다. 필요에 따라 링크를 "myimage.imgx"또는 "GetImage.imgx? id = XXX"로 정의 할 수 있습니다. 이는 사용자의 요구 사항과 데이터베이스에서 이미지 내용을 검색하는 방법에 따라 다릅니다.

관련 문제