2011-08-03 6 views
0

이것은 여러 번 여기에서 묻는 질문에 대한 변형입니다. 한 예 : Display an image contained in a byte[] with ASP.Net MVC3. 문제는 바이트 배열에서 이미지를 렌더링하는 방법입니다. 이와 비슷한 이미지 태그로ASP.NET MVC3의 DB에없는 byte []에서 이미지 렌더링

public FileContentResult Display(string id) { 
byte[] byteArray = GetImageFromDB(id); 
return new FileContentResult(byteArray, "image/jpeg"); 
} 

: 이것은

<img src="@Url.Action("Display", new { id = Model.Id })" /> 

모든 질문에서

은, 내가 위에서 제공된 링크에서 답변 중 하나와 유사한 동작이 이것은 GET 요청을 통해 바이트 배열을 전송할 수 없기 때문에 수행됩니다. 따라서 Action 메서드에서 조회 할 수 있도록 ID 만 전송됩니다. 나는이 부분을 얻는다, 그것은 문제가 아니다. 내가하려는 것은 데이터베이스에 저장하기 전에 작업을 확인할 수있는 '미리보기'페이지를 만드는 것입니다. 그들은 제목, 텍스트 및 이미지의 레이아웃을보고 저장할 것인지 아니면 돌아가서 편집 할 것인지 결정할 수 있습니다. 따라서 개체가 아직 데이터베이스에 저장되지 않았기 때문에 'GetImageFromDB (id)'부분이 작동하지 않습니다.

이 작업을 수행하는 방법이 있습니까? 아니면 데이터베이스에 일시적으로 바이트 배열을 저장하고 미리보기 페이지에 액세스해야합니까?

답변

1

나중에 (미리보기 또는 전체 크기 이미지로) 표시하려면 업로드 한 파일을 서버의 어딘가에 저장해야합니다. 그것이 데이터베이스이든 파일 시스템이든 그것은 당신에게 달렸습니다. 따라서 파일을 업로드 한 후에는 고유 한 Guid를 사용하여 이름을 변경하고이 Guid를 클라이언트에 반환하여 서버의 일부 위치에 임시 파일로 저장할 수 있으므로 Guid를 전달하는 미리보기 컨트롤러 작업에 대한 작업 링크를 만들 수 있습니다 임시 위치에서 파일을 가져 와서 클라이언트로 스트리밍합니다.

+0

감사합니다. 예, 먼저 파일을 저장해야한다는 것을 알았지 만 임시 폴더에 파일을 업로드 한 다음 나중에 데이터베이스에 업로드하는 것에 대해서는 생각하지 않았습니다. 감사. – adimauro

관련 문제