如何使用c#将视频保存到数据库?

时间:2014-01-31 04:50:05

标签: c# sql-server-2008 asp.net-3.5

我有想要将视频存储到数据库并在网格中显示从数据库下载的场景,我将通过fileupload控件上传视频,它应该是sql server2008数据库,这是c#和asp.net的最佳方式? / p>

3 个答案:

答案 0 :(得分:2)

它有很多链接。看看这个。

http://weblogs.asp.net/hajan/archive/2010/06/21/save-and-display-youtube-video-links-on-asp-net-website.aspx

http://forums.asp.net/t/1104451.aspx/1?How+to+retrieve+video+file+from+sql+server+database http://www.saurabhdeveloper.com/techtips_details.php?tipsid=15 http://forums.asp.net/p/1533758/3719583.aspx http://forums.asp.net/t/1045855.aspx/2/10 http://forums.asp.net/t/1511588.aspx/1 http://www.dotnetspider.com/forum/274821-Play-video-file-asp-net-page.aspx http://blogs.ugidotnet.org/kfra/archive/2006/10/04/50003.aspx http://www.dotnetspider.com/resources/16239-code-for-video-upload.aspx

http://www.c-sharpcorner.com/Forums/Thread/88899/ http://www.asp.net/webmatrix/tutorials/10-working-with-video

http://www.c-sharpcorner.com/Forums/Thread/88899/

试试此代码

 byte[] buffer;
//this is the array of bytes which will hold the data (file)

SqlConnection connection;
protected void ButtonUpload_Click(object sender, EventArgs e)
{
    //check the file

    if (FileUpload1.HasFile && FileUpload1.PostedFile != null 
        && FileUpload1.PostedFile.FileName != "")
    {
        HttpPostedFile file = FileUpload1.PostedFile;
        //retrieve the HttpPostedFile object

        buffer = new byte[file.ContentLength];
        int bytesReaded = file.InputStream.Read(buffer, 0, 
                          FileUpload1.PostedFile.ContentLength);

        if (bytesReaded > 0)
        {
            try
            {
                string connectionString = 
                  ConfigurationManager.ConnectionStrings[
                  "uploadConnectionString"].ConnectionString;
                connection = new SqlConnection(connectionString);
                SqlCommand cmd = new SqlCommand
                ("INSERT INTO Videos (Video, Video_Name, Video_Size)" + 
                 " VALUES (@video, @videoName, @videoSize)", connection);
                cmd.Parameters.Add("@video", 
                    SqlDbType.VarBinary, buffer.Length).Value = buffer;
                cmd.Parameters.Add("@videoName", 
                    SqlDbType.NVarChar).Value = FileUpload1.FileName;
                cmd.Parameters.Add("@videoSize", 
                    SqlDbType.BigInt).Value = file.ContentLength;
                using (connection)
                {
                    connection.Open();
                    int i = cmd.ExecuteNonQuery();
                    Label1.Text = "uploaded, " + i.ToString() + " rows affected";
                }
            }
            catch (Exception ex)
            {
                Label1.Text = ex.Message.ToString();
            }
        }

    }
    else
    {
        Label1.Text = "Choose a valid video file";
    }
}

答案 1 :(得分:1)

你说它“应该”是SQL Server 2008,但它必须是吗?

如果没有,SQL Server 2012提供了File Tables,用于在SQL Server中存储大文件。它实际上将数据存储在文件系统中,但是您不必编写任何代码来管理实际文件。

如果它确实需要是SQL Server 2008,那么您有以下选项:

1)FileStream使用varbinary(MAX)列类型 - 此方法可能存在性能问题。我个人不会以这种方式存储视频。

2)将文件放在文件系统上(在磁盘上),只将文件路径/文件名存储在DB中。然后编写代码来管理文件系统上的CRUD操作。

答案 2 :(得分:0)