2011-06-23 8 views

答えて

4

答えは、あなたがORMなどを使用しているかどうかにかかわらず、このSQL Serverにアクセスするために使用するテクノロジに非常に依存します...あなたの質問にそのような情報を提供していないので、プレーンなADO.NETを使用してこれを行う方法について説明します。

フォームで始めることができます:

<% using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) { %> 
    <label for="file">Select a pdf file:</label> 
    <input type="file" name="file" id="file" /> 
    <input type="submit" value="Upload" /> 
<% } %> 

と、このフォームの送信を処理するためのコントローラのアクション:もちろん

[HttpPost] 
public ActionResult Index(HttpPostedFileBase file) 
{ 
    if (file != null && file.ContentLength > 0) 
    { 
     var fileName = Path.GetFileName(file.FileName); 
     var extension = Path.GetExtension(fileName); 
     var document = new byte[file.InputStream.Length]; 
     file.InputStream.Read(document, 0, document.Length); 
     if (string.Equals(".pdf", extension, StringComparison.OrdinalIgnoreCase)) 
     { 
      using (var conn = new SqlConnection(SomeConnectionString)) 
      using (var cmd = conn.CreateCommand()) 
      { 
       conn.Open(); 
       cmd.CommandText = "INSERT INTO Documents (document) VALUES (@document);"; 
       cmd.Parameters.Add("@document", SqlDbType.Binary, 20).Value = document; 
       cmd.ExecuteNonQuery(); 
      } 
     } 
    } 
    return View(); 
} 

をSQL部分がに別々のリポジトリに外部化する必要がありますそのようなコードでコントローラの動作が乱雑にならないようにしてください。また、SQL Server 2008を使用している場合は、この種のものにさらに適合するnew FILESTREAM typeを見てください。

+0

+1のファイルストリーム –

関連する問題