2009-10-31 3 views
1

회사의 사용자가 winform HTML 편집기를 사용하여 특정 고객을 위해 텍스트와 그림을 넣는 프로젝트가 있습니다. 고객은 웹 사이트에서이 정보를 볼 것입니다.HTML 및 이미지를 저장할 위치는 어디입니까?

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 그것이 엄격히 HTML 텍스트라면 데이터베이스에있는 모든 것을 저장할 수 있고 그것을 표시하는 데 문제가 없습니다. 그러나 직원은


  1. 웹 사이트와의 WinForm 프로그램을 볼 수 있도록 내가 어떤 공공 장소에서 파일로 사진을 저장합니까 ... 사진을 표시 할 수있는 기능을 원하는가? 여기에있는 문제는 입니다.은 사진을 저장할 수있는 가장 좋은 공공 장소입니다. 웹 서버는 아무도 액세스 할 수없는 잠긴 서버가됩니다. ASP.Net에서 비 로컬 디렉토리의 파일을 가져올 수 있습니까?

  2. 사진을 데이터베이스에 저장하고 이미지 원본 태그를 데이터베이스의 그림으로 교체 할 정도로 스마트하게 만드나요? 나는이 어려운 얻을 수 있습니다 생각 (누군가가이 제안하는 경우 웹에 확실히 ..., 당신은 나에게의 WinForm과 웹에서이 작업을 수행하는 방법에 대한 몇 가지 C#을 예제를 줄 수 있습니까?)

나는 다른 사람이 있었다 알고 어딘가에 이렇게하려면 ...

답변

4

나는

EG (이것이 당신의 설정에 가능한 경우) 실제 이미지가 다음과 같은 경로에 저장됩니다 로컬 이미지 경로를 저장하는 데이터베이스를 사용하는 것이 좋습니다 것입니다 :

/App_Themes/Web/images/userfiles/YOURIMAGENAME.jpg 

그냥 데이터베이스에 다음 저장을

YOURIMAGENAME.jpg 

이 그런 다음 다음과 같이 뭔가를해야만 가질 수있는 의미 :

<asp:Image ID="imgImage" runat="sever" /> 

protected void Page_Load(object sender, EventArgs e) 
{ 
    //Your data-access code here 

    //image.ImageName is provided by your data access code. 
    imgImage.ImageUrl = string.Format("/App_Themes/Web/images/userfiles/{0}", image.ImageName) 
} 
0
  1. 예, 이러한 이미지에 대한 액세스를 제한하지 않으려는 경우. 그렇게 할 경우 www 루트에서 멀리 떨어져서 저장하고 스크립트로 브라우저에 보내십시오.

  2. 아니요. 이미지를 디스크에 저장하고 상대 경로를 DB에 저장하는 것이 좋습니다. 데이터베이스가 파일을 저장하는 올바른 위치가 아닙니다.

0

이 주제에 대한이

Storing Images in DB - Yea or Nay?

및 기타 이전 질문을 참조하십시오. 내 의견으로는 선택이 가능하고 합법적이며 두 가지를 모두 조합 한 것입니다 (데이터베이스에 파일 참조 저장). 당신은/파일이 예상 이미지의

  • 숫자로, 프로젝트의 특정 상황 (사용자가 제공하지 않았다)에 따라 결정을해야
  • 기능과 당신이 사용하는 것과 특정 데이터베이스의 성능 고려 사항, 얼룩 저장과 관련하여
0

쉽게 이미지를 데이터베이스에 저장 한 다음 검색 할 수 있습니다. 데이터베이스의 이미지를 표시하려면 asp.net 페이지 (article 참조) 또는 HttpHandler을 사용할 수 있습니다.

로컬 폴더에 파일을 저장할 수도 있습니다. 일반 읽기/쓰기 파일 작업을 사용할 수 있습니다. 이 작업을 수행하려면 ASP.NET 사용자 ([로컬 컴퓨터] \ ASPNET 또는 NETWORK SERVICE)가 해당 폴더에 대한 읽기/쓰기 액세스 권한이 있어야합니다. 원격 폴더를 사용하기 위해서는 더 많은 것들이 tricky이고 그렇게하려고 할 때 보안 구멍을 만들 수 있습니다.

결론적으로 로컬 폴더를 사용하는 것이 가장 좋은 해결책이라고 생각합니다.불가능할 경우 이국적인 솔루션 (FTP, 사용자 가장, 이미지 업로드 /로드 웹 서비스)을 피하고 데이터베이스를 사용하십시오.

0

파일 시스템을 사용할 수없는 경우 이미지를 Amazon S3과 같은 클라우드 저장소에 저장하는 것이 좋습니다.

S3 개체를 공개 읽기지만 비공개 쓰기가되도록 구성하면 소프트웨어 만 S3에 이미지를 추가 할 수 있지만 웹의 모든 사용자가 이미지를 볼 수 있습니다. 보안 요구 사항에 따라 WinForms 앱에서 S3 비밀 키를 인코딩하여 PUT URL을 생성하거나 사용자를 인증하고 서버의 비밀 키를 사용하여 PUT URL을 만드는 간단한 웹 서비스를 응용 프로그램 서버에 만들 수 있습니다. PUT URL은 클라이언트로 리턴되어 이미지 데이터를 업로드 할 수 있습니다.

S3를 사용하면 HTTP PUT을 사용하여 이미지를 업로드 할 수 있으며 편집기와 웹 브라우저는 모두 HTTP GET을 사용하여 이미지에 액세스합니다. 사용 가능한 C# 라이브러리와 웹에 샘플 코드가 많이있어 S3에 액세스 할 수 있습니다.

실제로 HTML 데이터에서도 동일한 작업을 수행 할 수 있습니다.

S3 (see pricing)와 관련된 비용이 있지만 비용이 범위 내에 있다고 가정하면 이러한 유형의 문제에 대한 훌륭한 해결책입니다.