загрузить большое видео в базу данных в asp.ngj

Я искал, как я могу сохранять и хранить видео большого размера, превышающего 4 МБ, в базу данных с помощью asp.net. Я пробовал много кодов. также я использовал:

<httpRuntime maxRequestLength="102400" executionTimeout="3600" />


<security >
  <requestFiltering>
    <requestLimits maxAllowedContentLength="1024000000" />
  </requestFiltering>
</security>

Это не работа. Он показывает мне сообщение:

время ожидания истекло. время ожидания истекло до завершения операции или сервер не отвечает

до сих пор я изменил столбец данных на varbinary (MAX), но я не могу хранить большой файл размером от 100 МБ до.

Мой код

 protected void Button1_Click(object sender, EventArgs e)
{
    // Read the file and convert it to Byte Array
    string filePath = FileUpload1.PostedFile.FileName;
    string filename = Path.GetFileName(filePath);
    string ext = Path.GetExtension(filename);
    string contenttype = String.Empty;


    if (ext == ".jpg" || ext == ".gif" || ext == ".png" || ext == ".bmp " || ext == " .jpeg")
    {
        Stream fs = FileUpload1.PostedFile.InputStream;
        BinaryReader br = new BinaryReader(fs);
        Byte[] bytes = br.ReadBytes((Int32)fs.Length);

        //insert the file into database

        string strQuery = "insert into Image(Img_Title, Img_Extension, Img_Data, Course_code, Course_num, Img_Description, Keyword , Date)" +
           " values (@Img_Title, @Img_Extension, @Img_Data, @Course_code, @Course_num, @Img_Description, @Keyword , @Date)";
        SqlCommand cmd = new SqlCommand(strQuery);
        cmd.Parameters.Add("@Img_Title", SqlDbType.VarChar).Value = filename;
        cmd.Parameters.Add("@Img_Extension", SqlDbType.VarChar).Value = ext;
        cmd.Parameters.Add("@Img_Data", SqlDbType.Binary).Value = bytes;
        cmd.Parameters.Add("@Date", SqlDbType.DateTime).Value = DateTime.Now;
        cmd.Parameters.Add("@Course_code", Course_code.SelectedItem.Text);
        cmd.Parameters.Add("@Course_num", Course_num.SelectedItem.Text);
        cmd.Parameters.Add("@Img_Description", Description.Text);
        cmd.Parameters.Add("@Keyword", keywords.Text);
        InsertUpdateData(cmd);
        Label2.ForeColor = System.Drawing.Color.Green;
        Label2.Text = "تم رفع الملف بنجاح";
    }


  else
    if (ext == ".avi" || ext == ".wmv" || ext == ".wma" || ext == ".wma " || ext == " .wma" || ext == ".rmvb" || ext == ".mp4" || ext == ".3gp " || ext == " .mkv" || ext == ".flv")
    {

        Byte[] buffer;
        Stream fs = FileUpload1.PostedFile.InputStream;
        BinaryReader br = new BinaryReader(fs);

            HttpPostedFile file = FileUpload1.PostedFile;//retrieve the HttpPostedFile object
            buffer = br.ReadBytes((int)FileUpload1.PostedFile.InputStream.Length);
            int bytesReaded = file.InputStream.Read(buffer, 0, FileUpload1.PostedFile.ContentLength);
            if (bytesReaded > 0)
            {


            // FileUpload1.SaveAs(Server.MapPath("../WebSite41/Videos/" + filenam));

                //insert the file into database

                string strQuery = "insert into [Video File](V_Title, V_Extension, Data, Course_code, Course_num, V_Description, Keyword,videoSize)" +
                                 " values (@V_Title, @V_Extension, @Data,  @Course_code, @Course_num, @V_Description, @Keyword ,@videoSize)";
                SqlCommand cmd = new SqlCommand(strQuery);
               // cmd.CommandTimeout = 90; 
                cmd.Parameters.Add("@V_Title", SqlDbType.VarChar).Value = FileUpload1.FileName;
                cmd.Parameters.Add("@V_Extension", SqlDbType.VarChar).Value = ext;
                //cmd.Parameters.AddWithValue("@Data", buffer);
                cmd.Parameters.AddWithValue("@Data", "../foldername/Videos/" + filename);
                cmd.Parameters.Add("@Course_code", Course_code.SelectedItem.Text);
                cmd.Parameters.Add("@Course_num", Course_num.SelectedItem.Text);
                cmd.Parameters.Add("@V_Description", Description.Text);
                cmd.Parameters.Add("@Keyword", keywords.Text);
                cmd.Parameters.Add("@videoSize", SqlDbType.BigInt).Value = file.ContentLength;
                InsertUpdateData(cmd);
                Label2.ForeColor = System.Drawing.Color.Green;
                Label2.Text = "تم رفع الملف بنجاح";
            }
        }


    else if (ext == ".doc" || ext == ".docx" || ext == ".docm" || ext == ".dotm" || ext == ".dotx" ||
         ext == ".xls " || ext == " .xlsx" || ext == " .xlsb" || ext == " .xlam" ||
         ext == ".ppt" || ext == ".pptx" || ext == ".pptm" || ext == ".potx" || ext == ".ppam" || ext == ".ppsx" || ext == ".ppsm" ||
         ext == ".sldx" || ext == ".sldm" || ext == ".thmx" ||
         ext == ".pdf" || ext == ".txt ")
    {
        Stream fs = FileUpload1.PostedFile.InputStream;
        BinaryReader br = new BinaryReader(fs);
        Byte[] bytes = br.ReadBytes((Int32)fs.Length);

        //insert the file into database

        string strQuery = "insert into [Text File](T_Title, T_Extension, T_Data, Course_code, Course_num, T_Description, T_Keyword,Date)" +
            " values (@T_Title, @T_Extension, @T_Data, @Course_code, @Course_num, @T_Description, @T_Keyword,@Date)";
        SqlCommand cmd = new SqlCommand(strQuery);
        cmd.Parameters.Add("@T_Title", SqlDbType.VarChar).Value = filename;
        cmd.Parameters.Add("@T_Extension", SqlDbType.VarChar).Value = ext;
        cmd.Parameters.Add("@T_Data", SqlDbType.Binary).Value = bytes;
        cmd.Parameters.Add("@Date", SqlDbType.DateTime).Value = DateTime.Now;
        cmd.Parameters.Add("@Course_code", Course_code.SelectedItem.Text);
        cmd.Parameters.Add("@Course_num", Course_num.SelectedItem.Text);
        cmd.Parameters.Add("@T_Description", Description.Text);
        cmd.Parameters.Add("@T_Keyword", keywords.Text);
        InsertUpdateData(cmd);
        Label2.ForeColor = System.Drawing.Color.Green;
        Label2.Text = "تم رفع الملف بنجاح";
    }


    else if (ext.ToLower() == ".html" || ext.ToLower() == ".htm")
    {
        Stream fs = FileUpload1.PostedFile.InputStream;
        BinaryReader br = new BinaryReader(fs);
        Byte[] bytes = br.ReadBytes((Int32)fs.Length);

        //insert the file into database

        string strQuery = "insert into [HTML File](H_Title, H_Extension, H_Data, Course_code, Course_num, H_Description, H_Keyword,Date)" +
           " values (@H_Title, @H_Extension, @H_Data, @Course_code, @Course_num, @H_Description, @H_Keyword ,@Date)";
        SqlCommand cmd = new SqlCommand(strQuery);
        cmd.Parameters.Add("@H_Title", SqlDbType.VarChar).Value = filename;
        cmd.Parameters.Add("@H_Extension", SqlDbType.VarChar).Value = ext;
        cmd.Parameters.Add("@H_Data", SqlDbType.Binary).Value = bytes;
        cmd.Parameters.Add("@Date", SqlDbType.DateTime).Value = DateTime.Now;
        cmd.Parameters.Add("@Course_code", Course_code.SelectedItem.Text);
        cmd.Parameters.Add("@Course_num", Course_num.SelectedItem.Text);
        cmd.Parameters.Add("@H_Description", Description.Text);
        cmd.Parameters.Add("@H_Keyword", keywords.Text);
        InsertUpdateData(cmd);
        Label2.ForeColor = System.Drawing.Color.Green;
        Label2.Text = "تم رفع الملف بنجاح";


        }




    else
    {
        Label2.ForeColor = System.Drawing.Color.Red;
        Label2.Text = "Error" +
          " Upload Image/Text formats";

    }
  }


private Boolean InsertUpdateData(SqlCommand cmd)
{
    String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    SqlConnection con = new SqlConnection(strConnString);
    cmd.CommandType = CommandType.Text;
    cmd.Connection = con;
    try
    {
        con.Open();
        cmd.ExecuteNonQuery();
        return true;
    }
    catch (Exception ex)
    {
        Response.Write(ex.Message);
        return false;
    }
    finally
    {
        con.Close();
        con.Dispose();
    }

}

Спасибо ...


person Dalal    schedule 08.07.2013    source источник
comment
Когда вы загружаете или загружаете файл, лучше использовать обработчик или, если у вас есть страница, отключить сеанс - см. этот аналогичный ответ: stackoverflow.com/questions/17441528/ Также лучше сохранять видео на жесткий диск, но это уже другой разговор.   -  person Aristos    schedule 08.07.2013
comment
это означает, что я должен добавить пользователя через сеанс, и я могу определить, что время ожидания для загрузки и загрузки файла велико, не так ли?   -  person Dalal    schedule 09.07.2013


Ответы (1)


Попробуйте изменить тип данных поля, которое вы используете для хранения большого файла, на изображение вместо двоичного

и в вашем коде используйте:

cmd.Parameters.Add("@PARAMETER", SqlDbType.Image).Value = bytes;

вместо SqlDbType.Binary

также обратите внимание, что вам следует увеличить время ожидания в строке подключения, если вам нужно больше времени.

value="Сервер=###.###.###.###;База данных=$$$$$$$;Идентификатор пользователя=##;Пароль=$$$$$$;Время ожидания подключения= 1200 "

person Siraj Mansour    schedule 08.07.2013
comment
Где я могу добавить это: значение=Сервер=###.###.###.###;База данных=$$$$$$$;Идентификатор пользователя=##;Пароль=$$$$$$ ;Время ожидания соединения= 1200 ? - person Dalal; 08.07.2013
comment
в вашей строке подключения и, как показано в вашем коде, он находится в файле конфигурации (app.config/web.config, если это веб-приложение) - person Siraj Mansour; 09.07.2013
comment
и вам просто нужно добавить параметр времени ожидания соединения, но пробовали ли вы то, что я предложил, прежде чем изменять время ожидания соединения? - person Siraj Mansour; 09.07.2013
comment
Я изменил тип данных на изображение и использовал код, но это тоже не сработало. показать мне : соединение было сброшено - person Dalal; 10.07.2013
comment
у вас все еще истекает тайм-аут? - person Siraj Mansour; 10.07.2013
comment
Вы пытались увеличить время ожидания из строки подключения? - person Siraj Mansour; 11.07.2013
comment
Я использовал :‹httpRuntime maxRequestLength=102400 executeTimeout=360 /›... он отсортирован до 27 МБ, но когда я загружаю видео, он показывает: (Строка или двоичные данные будут усечены. Оператор был завершен.) - person Dalal; 11.07.2013
comment
это не строка подключения, если вы скопируете и вставите для меня свой веб-файл .config, я укажу вам строку подключения. хотя увеличение этого поможет вам загружать большие файлы - person Siraj Mansour; 11.07.2013
comment
Я пытался использовать (время ожидания подключения) показать ошибку ››Соединение было сброшено - person Dalal; 14.07.2013
comment
Извините, я не мог предоставить вам больше помощи. Удачи - person Siraj Mansour; 15.07.2013
comment
Спасибо :), я нашел решение проблемы здесь stackoverflow.com/questions /3853767/.. - person Dalal; 16.07.2013
comment
@Dalal Отлично :), но вы полностью вводите меня в заблуждение, вы сказали мне, что проблема заключалась в выполнении вставки в SQL, хотя на самом деле это была загрузка файла на сервер. Я рад, что это все-таки решено - person Siraj Mansour; 16.07.2013