2014-01-31 6 views
0

У меня есть сценарий, где я хочу хранить видео в базе данных и показывать в сетке для загрузки из базы данных, я буду загружать видео с помощью управления файловой системой, и это должна быть база данных sql server2008, которая является лучшим способом в C# и asp.net?Как сохранить видео в базу данных с помощью C#?

+1

Не храните видео в базе данных. Сохраните только его имя в таблице и загрузите видео в папку. Это я считаю самым лучшим способом. – Shashank

ответ

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"; 
    } 
} 
+0

Не могли бы вы извлечь некоторые полезные данные из этих ссылок? Это потрясающе! – rhughes

+0

@rhughes см. Мой ответ. –

1

Вы говорите, что "должны" быть SQL Server 2008, но это должно быть?

Если нет, SQL Server 2012 предлагает File Tables, предназначенные для хранения больших файлов на SQL Server. Он фактически хранит данные в файловой системе, но таким образом, что вам не нужно писать какой-либо код для управления фактическим файлом.

Если он должен быть SQL Server 2008, то у вас есть следующие варианты:

1) FileStream, используя тип столбца VARBINARY (MAX) - могут быть проблемы с производительностью с помощью этого метода. Я лично не буду хранить видео таким образом.

2) Поместите файл в файловую систему (на диск) и сохраните только путь к файлу/имя файла в БД. Затем вы пишете код для управления операциями CRUD в файловой системе.