Javascript HTML输入文件上传保存为超长url,无需PHP、AJAX或jQuery

Javascript HTML输入文件上传保存为超长url,无需PHP、AJAX或jQuery,javascript,html,file-upload,Javascript,Html,File Upload,我有一个网站,你可以上传文件,并将其保存在数据库中,但有没有一种方法,使url不必是100万字符长?这是上传的代码 function readImg(input, eltID) { if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function (e) { docu

我有一个网站,你可以上传文件,并将其保存在数据库中,但有没有一种方法,使url不必是100万字符长?这是上传的代码

function readImg(input, eltID) {
        if (input.files && input.files[0]) {
            var reader = new FileReader();
            reader.onload = function (e) {
                document.getElementById(eltID).style.backgroundImage = 'url('+e.target.result+')';
            };
        reader.readAsDataURL(input.files[0]);
        }
}
这就产生了:

有解决办法吗

我也没有使用任何形式。使用input type=file

哪里是“上传”部分? 无论如何,在客户端,您可以使用createObjectURL

function readImg(input, eltID) {
  if (input.files && input.files[0]) {
    var url = URL.createObjectURL(input.files[0])
    document.getElementById(eltID).style.backgroundImage = 'url('+url+')'
  }
}

您必须将图像数据存储在某个位置

此时,您似乎正在选择将其存储在
数据:
方案URL中

如果不减少图像数据总量(例如,通过降低质量),则无法减小图像数据的大小


如果您想要一个简短的URL,则将URL作为图像的引用(例如,将文件存储在文件系统中,并在其前面放置一个静态HTTP服务器,则URL将基于您将图像保存为的文件名)。

此库对图像进行编码,这就是原因,它太长了,但如何不对其进行编码?我正在使用内置文件阅读器。请尝试将上载表单从
GET
更改为
POST
。@UsagiMiyamoto。问题是,
readAsDataURL
这会将图像转换为base64编码。我没有使用任何表单,所以我必须将数据URL转换为文件?Idk jquery如何生成文件。我只想要纯javascript代码。它们以文件开始。你正在做一些事情把它们转换成URL。昆汀,是的,它们是以文件开始的,但是如果我不把它们转换成URL会怎么样?我对FileReader了解不多,因为我实际上是将其提供给socket.io服务器并将其存储到数据库中。@KinoBacaltos-如果不将它们转换为URL,那么您就有一些二进制图像数据,它们不是文本,因此不能存储在JSON中。我是否应该将DataURI转换为文件,然后通过路径获取它们?