2009-02-21 4 views

Odpowiedz

3

Jeśli jesteś zainteresowany wykorzystaniem bazy danych do przechowywania plików, spójrz na this 4guysfromrolla article. Jest zorientowany na sieć, ale nie powinno być problemu ze znalezieniem tego, czego potrzebujesz.

3

Aby umieścić go w bazie danych, należy go przeczytać w tablicy bajtów. Albo odczytaj go z systemu plików, albo użyj właściwości AspNetFileUploadWebControl.FileBytes. Utwórz procedurę składowaną insert i dodaj tablicę bajtów jako parametr dla kolumny DB (kolumna musi być typu danych SQL "image").

Aby dostać się do bazy danych, należy użyć coś takiego:

theRow = getDatarowFromDatabase(); 
aByteArrayOfTheFile = (byte[])theRow["theSqlImageColumnWithTheFileInIt"]; 

Aby umożliwić użytkownikowi przeglądać lub pobrać go używać metody SendAsFileToBrowser():

SendAsFileToBrowser(aByteArrayOfTheFile, "application/pdf", "downloaded.pdf"); 

kod źródłowy metoda (z przeciążeniami):

// Stream a binary file to the user's web browser so they can open or save it. 
    public static void SendAsFileToBrowser(byte[] File, string Type, string FileName) 
    { 
     string disp = "attachment"; 
     if (string.IsNullOrEmpty(FileName)) 
     { 
      disp = "inline"; 
     } 

     // set headers 
     var r = HttpContext.Current.Response; 
     r.ContentType = Type; // eg "image/Png" 
     r.Clear(); 
     r.AddHeader("Content-Type", "binary/octet-stream"); 
     r.AddHeader("Content-Length", File.Length.ToString()); 
     r.AddHeader("Content-Disposition", disp + "; filename=" + FileName + "; size=" + File.Length.ToString()); 
     r.Flush(); 

     // write data to requesting browser 
     r.BinaryWrite(File); 
     r.Flush(); 
    } 
    //overload 
    public static void SendAsFileToBrowser(byte[] File, string Type) 
    { 
     SendAsFileToBrowser(File, Type, ""); 
    } 
    // overload 
    public static void SendAsFileToBrowser(System.IO.Stream File, string Type, string FileName) 
    { 
     byte[] buffer = new byte[File.Length]; 
     int length = (int)File.Length; 
     File.Write(buffer, 0, length - 1); 
     SendAsFileToBrowser(buffer, FileName, Type); 
    }