将 javascript 源文件存储在 sql 服务器数据库中

storing javascript source file in sql server database

我正在开发一个 asp.net 网络应用程序,用户可以在其中上传 javascript 源代码文件并将其存储到 sqlserver 数据库中。

他上传的文件是javascript他自己开发然后"minified"感谢webpack的文件。最终文件可能如下所示:

window["integration/user"]=function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(

这只是文件的摘录。 这些文件的大小通常为 10 000 字节(大小由我的 windows 浏览器给出)。

所以我的问题如下:

由于 varchar 和 varbinary 具有相同的最大容量(8000 个字符相当于 varchar 的 8000 字节和 varbinary 的 8000 字节),最好的是:

-将 javascript 作为纯文本存储在 varchar 列中

-在c#中转换为二进制数据然后存入varbinary列

此外,我通过尝试第二种解决方案做了一个简单的测试,它正在运行(我设法将它存储到一个 varbinary 列中,然后使用 c# 转换代码从中读回 javascript) ,但我无法理解的是,如何将大小为 10000 字节(windows 给出的大小)的文件成功存储在最大容量为 8000 字节(比文件小)的 varbinary 列中?

这是我的专栏声明:

[JavascriptBundle] [varbinary](max) NOT NULL

我认为令人困惑的是,如果您明确定义 varcharvarbinary 的长度,那么 8000 就是限制。

但是 varchar(max)varbinary(max) 的最大长度都是 2^31-1,即 2,147,483,647 字节。您希望以哪种方式定义数据库列。

您使用两者中的哪一个取决于您的首选设计,varchar 的优点是不必转换为二进制并返回。

参考文献:

varchar - https://docs.microsoft.com/en-us/sql/t-sql/data-types/char-and-varchar-transact-sql?view=sql-server-2017

varbinary - https://docs.microsoft.com/en-us/sql/t-sql/data-types/binary-and-varbinary-transact-sql?view=sql-server-2017