我有一项任务是在数据库中插入视频并通过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));
}
答案 0 :(得分:0)
原因是,您将路径作为字符串参数传递给方法AddObject
和MapPath
。因此,路径将保持“〜/ 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);
}
完成一步一步的教程: