如果我的引用是Base64版本的文件,我如何限制文件大小?



如果用户上传一个文件(例如mp3),使用标准的<input type="file"/>,我会将他们的文件作为Base64字符串存储在DB中。

然而,我意识到Base64字符串的大小将大于文件的大小。

例如,如果用户上传的文件是3984547字节,那么我将其转换为Base64字符串,然后使用

计算该字符串的大小:
function base64bytes(fileAsBase64) {
return (new TextEncoder().encode(fileAsBase64)).length
}

,返回值为5312755字节。

所以如果用户上传一个~3.9Mb的文件,我将在DB中存储的Base64字符串将是~5.3Mb。

我的问题是,我想只允许Base64字符串高达100Mb。

但是我不知道如何让用户知道。

如果我告诉用户我只允许最大100Mb的文件,这将是误导。他们可能在他们的机器上上传一个98Mb的文件,但我的Base64字符串可能大于100Mb,所以我将拒绝他们的文件并混淆他们。

根据这个答案,Base64版本的图像总是比原始图像文件大137%。但是这个比率是否只代表图像? 我的文件可以是任何类型的

这个比率是否足够安全,可以在任何类型的文件上使用,或者你会建议一些其他的解决方案来解决我的问题?

base64版本的文件至少比原始文件大33%。增量取决于文件大小,文件越小,增量越大。

允许上传的文件大小为75MB,则base64编码的文件大小约为99.75MB。

最新更新