如何在DB中保存视频文件?

时间:2013-10-30 09:06:04

标签: asp.net html5 video

我有一项任务是在数据库中插入视频并通过Html5视频控件显示它。我很好地完成了我的代码,并且视频在数据库中保存得很好,但是当我尝试播放视频时,它没有,当我检查我的代码时,我发现视频保存在数据库中,路径为~/res/Files/。当我  删除~/,因为路径将res/Files/运行良好。我该如何解决这个问题?

protected void btnSubmit_Click(object sender, ImageClickEventArgs e)
{
    btier.AddObject("~/res/Files/" + FUFile.FileName);
    FUFile.SaveAs(Server.MapPath("~/res/Files/" + FUFile.FileName));
}

2 个答案:

答案 0 :(得分:0)

原因是,您将路径作为字符串参数传递给方法AddObjectMapPath。因此,路径将保持“〜/ res / ...”而不是解析为应用程序根目录。

您必须首先解析根,然后保存该路径。一个安全的选择是使用VirtualPathUtility。像这样:

tempVar = VirtualPathUtility.ToAbsolute("~/res/Files/" + FUFile.FileName);
btier.AddObject(tempVar);
FUFile.SaveAs(Server.MapPath(tempVar));

tempVar是字符串变量。

答案 1 :(得分:0)

protected void btnUpload_Click(object sender, EventArgs e)
{
    using (BinaryReader br = new BinaryReader(FileUpload1.PostedFile.InputStream))
    {
        byte[] bytes = br.ReadBytes((int)FileUpload1.PostedFile.InputStream.Length);
        string strConnString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        using (SqlConnection con = new SqlConnection(strConnString))
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.CommandText = "insert into tblFiles(Name, ContentType, Data) values (@Name, @ContentType, @Data)";
                cmd.Parameters.AddWithValue("@Name", Path.GetFileName(FileUpload1.PostedFile.FileName));
                cmd.Parameters.AddWithValue("@ContentType", "video/mp4");
                cmd.Parameters.AddWithValue("@Data", bytes);
                cmd.Connection = con;
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
            }
        }
    }
    Response.Redirect(Request.Url.AbsoluteUri);
}

完成一步一步的教程:

http://www.aspsnippets.com/Articles/Upload-Save-Retrieve-and-Play-MP4-Video-files-with-live-streaming-from-Database-in-ASPNet-using-C-and-VBNet.aspx