将javascript源文件存储在sql server数据库中

问题描述 投票:0回答:1

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

他上传的文件是由他开发的javascript文件,然后由于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),但我无法理解的是如何将大小为10000bytes(由Windows给出的大小)的文件成功存储在最大容量为8000字节的varbinary列中(如此小于文件)?

这是我的专栏声明:

[JavascriptBundle] [varbinary](max) NOT NULL
javascript asp.net webpack varchar varbinary
1个回答
0
投票

我认为令人困惑的是,如果你明确定义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

© www.soinside.com 2019 - 2024. All rights reserved.