2009-04-17 12 views
3

ASP.net Webフォームによってアップロードされたファイルを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番目の

関連する問題