如何将文件从数据库保存到服务器

时间:2012-10-09 17:13:16

标签: c# asp.net-mvc

问题相当简单,我理解有点无意义,但仍然......

当然,数据库在服务器上,我需要一个动作,当它从数据库中获取该文件并将其保存到我AppSettings["Active"]配置属性中的文件夹时。

基本上,

public ActionResult Activate(int id)
{
    Project project = db.Projects.Find(id);

    var activeProjectData = project.XML; // project.XML returns byte[] type
    //For download (not in this method of course) i'm using something like return File(activeProjectData, "text/xml"); and that works ok

}

现在我想将该文件保存到AppSettings["Active"]路径。不确定如何去做。我尝试过使用System.IO.File.Create(),但结果并不好。

感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

只需创建一个FileStream并使用它来编写数据:

string fileName = ConfigurationManager.AppSettings["Active"];
using(var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write) )
{
    fs.Write(project.XML, 0, project.XML.Length);
}

如果您不需要更多控制权,File类上会有simple helper method

File.WriteAllBytes(fileName, project.XML);

答案 1 :(得分:0)

您需要使用FileStream

SqlCommand ("select fileBin from SomeTable", connection);
byte[] buffer = (byte[]) command.ExecuteScalar ();
connection.Close();
FileStream fs = new FileStream(@"C:\filename.pdf", FileMode.Create);
fs.Write(buffer, 0, buffer.Length);
fs.Close();