2009-04-17 3 views
3

ASP.net 웹 폼에서 업로드 한 파일을 SQL Server 2005 varbinary (max) 필드에 저장하는 방법은 무엇입니까?ASP.NET 저장소 파일 업로드 SQL Server 테이블

protected void btnUpload_Click(object sender, EventArgs e) 
{ 
    for (int i = 0; i < Request.Files.Count; i++) 
    { 
     StoreFile(Request.Files[i]); 
    } 
} 

private void StoreFile(HttpPostedFile file) 
{ 
    // what do i do now? 
} 

평범한 구식 ado.net 예는 좋은 것 : 여기

는 내가 지금까지 가지고있는 것입니다. 그래서 linq SQL 예제 것입니다.

감사합니다.

+0

예 google 전면에있다. 1 단계 : 바이트 배열 가져 오기, 2 단계 : command.Parameters.AddWithValue ("@ Data", data); 3 단계 : 실행. –

+0

답변으로 게시하지 않는 이유는 무엇입니까? 경쟁의 외모에서, 내가 너무 게으 르기 때문에 그것은 –

+0

으로 받아 들여질 것입니다 : p –

답변

1

이것은 일반적으로 나쁜 형태로 간주됩니다. 그것은 데이터베이스를 압축하고 실제로 하드 드라이브 폴더에 모든 파일을 유지하고 단지 파일의 위치를 ​​DB에 저장하는 것보다 어떤 이점도 제공하지 않습니다. 이 작업을 수행 하시겠습니까?

+0

거기에 장단점이 있습니다. 손상 SQL Server 2008의 파일 스트림입니다. –

+0

몇 가지 장점이 있습니까? –

+0

내부 응용 프로그램을 다루고 있고 비교적 작은 파일이나 문서를 가지고 있다면 버전 관리와 관련하여 매우 유용 할 수 있습니다. 저는 이미징 회사에서 일하면서 중앙 저장소에있는 더 큰 파일에 대한 포인터를 사용하여 축소판 및 작은 파일을 데이터베이스에 저장하는 것이 매우 좋았습니다. –

2

에서 데이터베이스 에 직접 파일을 업로드하는 방법에 대한 좋은 튜토리얼이 여기에 내가이 LINQ to SQL은을 사용했던 방법입니다 :

여기
FilesDataContext db = new FilesDataContext(); 

protected void btnUpload_Click(object sender, EventArgs e) 
{ 
    for (int i = 0; i < Request.Files.Count; i++) 
    { 
     StoreFile(Request.Files[i]); 
    } 

    db.SubmitChanges(); 
} 

private void StoreFile(HttpPostedFile file) 
{ 
    byte[] data = new byte[file.ContentLength]; 
    file.InputStream.Read(data, 0, file.ContentLength); 

    File f = new File(); 
    f.Data = data; 
    f.Filename = file.FileName; 
    db.Files.InsertOnSubmit(f); 
} 
0

로니의 대답의 빠른 리팩토링이다 :

Public Shared Sub SaveUploadedFile(File As HttpPostedFile) 
    Dim oFile As Db.File 

    oFile = New Db.File 
    oFile.Data = File.ToBytes 
End Sub 

<Extension()> 
Public Function ToBytes(File As HttpPostedFile) As Byte() 
    ToBytes = New Byte(File.ContentLength - 1) {} 

    Using oStream As Stream = File.InputStream 
    oStream.Read(ToBytes, 0, File.ContentLength) 
    End Using 
End Function 

HTH 번째의