2

見つけた投稿の例を使用しています。これは私がしていることにぴったりのようです。ファイルを保存するコードは次のとおりです。

[HttpPost]
public ActionResult FileUpload(HttpPostedFileBase excelFile)
{
   //Save the uploaded file to the disc.
   string savedFileName = "~/App_Data/uploads/";// +excelFile.FileName;
   string filePath = Path.Combine(savedFileName, excelFile.FileName); 
   excelFile.SaveAs(Server.MapPath(filePath));

   return View();
}

データをデータベーステーブルに配置するコードは次のとおりです。

private void SaveFileToDatabase(string savedFileName)
{
    String strConnection = "Data Source=.\\SQLEXPRESS;AttachDbFilename='catalog=QQAEntities'Integrated Security=SSPI;User Instance=True";
    String connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;", Server.MapPath(savedFileName));
    {
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
       using (OleDbCommand cmd = new OleDbCommand("SELECT * FROM [dbo_ts_quality_audit_tbl$]", connection))
       {
          connection.Open();

          using (OleDbDataReader dReader = cmd.ExecuteReader())
          {
             using (SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection))
             {
                 //Give your Destination table name 
                 sqlBulk.DestinationTableName = "AuditSchedules";
                 sqlBulk.WriteToServer(dReader);
             }
          }
       }
       }
   }
}

private string GetLocalFilePath(string saveDirectory, FileUpload fileUploadControl)
{
   //System.Web.UI.WebControls.WebControl
   string filePath = Path.Combine(saveDirectory, fileUploadControl.FileName);

   fileUploadControl.SaveAs(filePath);

   return filePath;
}

FileUploadのビューは次のとおりです。

<h2>FileUpload</h2>

@using (Html.BeginForm("FileUpload", "Admin", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" id="excelFile" name="excelFile" />
<input type="submit" value="Upload" />
}

アップロードは機能します。私の質問は; ビューでデータ転送()を呼び出すにはどうすればよいSaveFileToDatabaseですか?これはすべて管理セクションから行われます。

また、構成内のデータベースへの接続がすでにあります-これをクリーンアップするにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

ビューはファイル情報を取得する必要がありますが、すべての実行をコントローラーに渡します。コントローラー内で、次のように SaveFileToDatabase 関数を呼び出して、保存した一時ファイルを渡す必要があります。

[HttpPost]
public ActionResult FileUpload(HttpPostedFileBase excelFile)
{
    //Save the uploaded file to the disc.
    string savedFileName = "~/App_Data/uploads/";// +excelFile.FileName;
    string filePath = Path.Combine(savedFileName, excelFile.FileName); 
    excelFile.SaveAs(Server.MapPath(filePath));

    // Call function to place temporary file into database
    SaveFileToDatabase(filePath);

    // Optional: Delete temporary Excel file from server

    return View();
}

(一時的な Excel ファイルをサーバーに永続化するかどうかを検討することを忘れないでください。そうでない場合は、処理が完了したことがわかったら、ファイルを削除する必要があります)

于 2012-06-29T19:50:01.840 に答える