У меня есть сценарий, где я хочу хранить видео в базе данных и показывать в сетке для загрузки из базы данных, я буду загружать видео с помощью управления файловой системой, и это должна быть база данных sql server2008, которая является лучшим способом в C# и asp.net?Как сохранить видео в базу данных с помощью C#?
ответ
Это поможет Вам ... увидеть по следующей ссылке http://www.codeproject.com/Articles/308552/Upload-and-Download-Files-to-SQL-Servers-in-ASP-Ne
Есть много ссылки на него. Проверьте это.
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";
}
}
Не могли бы вы извлечь некоторые полезные данные из этих ссылок? Это потрясающе! – rhughes
@rhughes см. Мой ответ. –
Вы говорите, что "должны" быть SQL Server 2008, но это должно быть?
Если нет, SQL Server 2012 предлагает File Tables, предназначенные для хранения больших файлов на SQL Server. Он фактически хранит данные в файловой системе, но таким образом, что вам не нужно писать какой-либо код для управления фактическим файлом.
Если он должен быть SQL Server 2008, то у вас есть следующие варианты:
1) FileStream, используя тип столбца VARBINARY (MAX) - могут быть проблемы с производительностью с помощью этого метода. Я лично не буду хранить видео таким образом.
2) Поместите файл в файловую систему (на диск) и сохраните только путь к файлу/имя файла в БД. Затем вы пишете код для управления операциями CRUD в файловой системе.
Не храните видео в базе данных. Сохраните только его имя в таблице и загрузите видео в папку. Это я считаю самым лучшим способом. – Shashank