2012-03-05 8 views
5

Tôi đang phát triển một ứng dụng web ở chỗ tôi cần lưu trữ tệp hình ảnh và một số tài liệu khác trong cơ sở dữ liệu và sau đó tôi phải hiển thị chúng trên trang web trong hộp hình ảnh tốt nhất. tôi đã lưu trữ hình ảnh trong cơ sở dữ liệu và các tệp PDF dưới dạng mảng byte và tôi đã sử dụng Trình xử lý chung để lấy mảng byte từ cơ sở dữ liệu và sau đó hiển thị chúng trong hộp hình ảnh hoạt động tốt cho hình ảnh nhưng không hoạt động với tệp PDF .Làm thế nào để hiển thị mảng btye pdf được lưu trữ trong SQL Server để asp.net WebForm trong một hộp hình ảnh?

public class ShowImage : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     Int32 imgID; 
     if (context.Request.QueryString["id"] != null) 
      imgID = Convert.ToInt32(context.Request.QueryString["id"]); 
     else 
      throw new ArgumentException("No parameter specified"); 

     context.Response.ContentType = "image/jpeg"; 
     byte[] buffer = ShowEmpImage(imgID); 
     context.Response.BinaryWrite(buffer); 
    } 

    public Stream ShowEmpImage(int empno) 
    { 
     dbClass db = new dbClass(); 
     string sql = "SELECT imgfile FROM myFiles WHERE id = @ID"; 
     SqlCommand cmd = new SqlCommand(sql, db.con); 
     cmd.CommandType = CommandType.Text; 
     cmd.Parameters.AddWithValue("@ID", empno); 
     object img = null; 
     try 
     { 
      db.Connect(); 
      img = cmd.ExecuteScalar(); 
     } 
     catch 
     { 
      return null; 
     } 
     finally 
     { 
      db.Disconnect(); 
     } 
     return new MemoryStream((byte[])img); 
    } 

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

vui lòng hướng dẫn tôi làm cách nào để hiển thị tệp PDF và một số tệp khác vào hộp hình ảnh? thực sự vấn đề là ứng dụng của tôi chạy với ứng dụng hiện có và không có cách nào để lưu trữ các tệp mở rộng nên cách duy nhất tôi có thể hiển thị tệp là "hiển thị chúng dưới dạng hình ảnh" nhưng nếu chúng là cách tốt hơn thì hãy giúp tôi tìm bạn bè .

Trả lời

1

Có lý do khiến PDF không hoạt động khi đại diện cho nó dưới dạng hình ảnh ... không phải là hình ảnh. Ngoài ra, tuyên bố nó là "image/jpeg" sẽ làm cho nó khá bị hỏng trừ khi trình duyệt kiểm tra tập tin tiêu đề rõ ràng, và thực sự cần sửa IMO. Nếu hiện tại bạn không lưu trữ tên tệp/tiện ích mở rộng/MIME/cái gì đó một cách thẳng thắn: đó là sự cố bạn cần khắc phục.

Để hiển thị tệp PDF, tôi nghi ngờ bạn cần sử dụng thay vì <img>, có thể: không hoạt động trên tất cả các trình duyệt và b: có thể không thuận tiện cho người gọi. Cá nhân tôi chỉ cung cấp liên kết tải xuống (và trong trình xử lý, hãy sử dụng content-disposition để yêu cầu trình duyệt coi đó là bản tải xuống).

+0

vì vậy hãy cho tôi biết làm thế nào tôi có thể hiển thị nó với giới hạn trình duyệt? tôi cần hiển thị cả tệp hình ảnh hoặc tệp PDF trên trang web của mình, cách nào tốt hơn để hiển thị chúng trên trang web? –

+0

@AqEeL nếu bạn muốn hiển thị hình ảnh * * của PDF, có lẽ [xem tại đây] (http://stackoverflow.com/questions/1255322/create-pdf-thumbnail-with-c-sharp). Nếu không thì; sử dụng một '