0

我的任务是在数据库中插入视频并通过 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));
}
4

2 回答 2

0

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

您必须先解析根目录,然后保存该路径。一种安全的选择是使用VirtualPathUtility. 像这样的东西:

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

tempVar字符串变量在哪里。

于 2013-10-30T09:45:15.983 回答
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

于 2013-10-30T11:23:49.570 回答