【问题标题】:How to Insert Videos in Sql-Server using C#?如何使用 C# 在 Sql-Server 中插入视频?
【发布时间】:2019-03-28 14:57:30
【问题描述】:

当我尝试在 Sql server 中保存视频时,我遇到了以下错误: 请求过滤模块用于拒绝超过请求内容长度的请求。

//Converting a file Uploaded in byte before inserting it in DB.

using (BinaryReader br = new BinaryReader(fs))
{
   byte[] bytes = br.ReadBytes((Int32)fs.Length);
   string constr = (@"Data Source=(localdb)\MSSQLLocalDB;....");               

   using (SqlConnection con = new SqlConnection(constr))
   {
      string query = "insert into tblFiles values (@Name, @ContentType, @Data)";

      using (SqlCommand cmd = new SqlCommand(query))
      {
         //// ????
      }
   }
}

//我在 Sql_Server 中使用的表类型

CREATE TABLE tblFiles(Id int IDENTITY PRIMARY KEY,Name 
           VARCHAR(100) NOT NULL,
            ContentType NVARCHAR(4000)NOT NULL, Data VARBINARY(MAX)NOT 
              NULL);

【问题讨论】:

  • 我劝你不要像这样将视频直接存储在数据库中。为什么不将它们存储在磁盘上并将路径和文件名放入数据库中?
  • 或者使用BLOB ? (但是,是的,我会将视频存储在磁盘上而不是 DB 上)
  • 如果问题是“请求过滤模块被配置为拒绝超过请求内容长度的请求。”,那么......问题与存储位置无关(特别是: 与 SQL Server 无关,尽管我同意@SeanLange 将其存储在数据库中是一个糟糕的选择) - 你会遇到同样的问题 where-ever 你存储它 - 问题是它太大,意思是:您的网络服务器被配置为将其视为恶意。有充分的理由。无论您在哪里/如何存储它,它的大小都是一样的。

标签: c# asp.net sql-server


【解决方案1】:

与其尝试将视频数据编码为字节并将其存储在数据库中,不如将视频存储在磁盘上并将视频的路径存储在数据库中。因此,与其让你的数据库膨胀,你有更有效的设计。

Storing Images in DB - Yea or Nay?

【讨论】:

  • 我完全同意。
【解决方案2】:

只需像任何其他数据类型一样添加参数即可:

cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = name;
cmd.Parameters.Add("@Data", SqlDbType.VarBinary).Value = bytes;
cmd.Parameters.Add("@ContentType", SqlDbType.NVarChar).Value = contentType;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    相关资源
    最近更新 更多