2012-03-05 8 views
5

Resim dosyalarını ve diğer belgeleri bir veritabanında saklamak için bir web uygulaması geliştiriyorum ve daha sonra bunları bir görüntü kutusunda tercihen bir web sayfasında göstermeliyim. Ben veritabanında görüntüleri depolamak ve bayt dizisi biçiminde PDF dosyaları ve ben veritabanından bayt dizisi almak için bir Genel İşleyici kullandım ve daha sonra bir resim kutusunda görüntüler için iyi çalışır ancak PDF dosyaları ile çalışmaz .SQL Server'da depolanmış pdf btye dizisini bir görüntü kutusunda asp.net WebForm'a nasıl gösterirsiniz?

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; 
     } 
    } 
} 

i görüntü kutusuna PDF dosyalarını ve diğer bazı dosyaları göstermek nasıl bana yol lütfen? aslında sorun benim uygulama var olan uygulama ile çalışır ve dosya uzantıları saklamak için hiçbir yolu yoktur bu yüzden dosyaları gösterebilirim "bir resim olarak göster", ancak daha iyi bir yol ise bana arkadaşlarım yardım .

cevap

1

Görüntüyü bir resim olarak temsil ederken PDF çalışmayan bir neden var ... bir resim değil. Ayrıca, tarayıcının açık dosya denetimi gerektirmediği ve gerçekten IMO'yu düzeltmesi gerekmedikçe, "image/jpeg" olduğunu iddia etmesi oldukça bozuk olacaktır. Şu anda dosya adı/extension/MIME/bir şey saklamıyorsanız, açıkçası: düzeltmeniz gereken bir sorun.

Bir PDF görüntülemek için, bir <img> yerine bir kullanmanız gerektiğinden şüpheleniyorum; bu, a: tüm tarayıcılarda çalışmayabilir ve b: arayan için çok uygun olmayabilir. Şahsen ben bir indirme linki (ve işleyicide, bir indirme olarak tarayıcının bunu söylemek için content-disposition kullanın) teklif ediyorum.

+0

bu yüzden nasıl bir tarayıcı sınırlaması ile görüntüleyebilirim? Web sayfamda hem resim dosyalarını hem de PDF dosyalarını göstermem gerekiyor, web sayfasında bunları görüntülemenin daha iyi bir yolu nedir? –

+0

@AqEeL PDF dosyasının * görüntülerini * görüntülemek isterseniz, belki de [buraya bakın] (http://stackoverflow.com/questions/1255322/create-pdf-thumbnail-with-c-sharp). Aksi takdirde; Bir "