【问题标题】:html value is truncating my stringhtml 值正在截断我的字符串
【发布时间】:2014-09-24 12:11:50
【问题描述】:

在我的页面上,我使用 HTML5 在浏览器上上传文件。该文件是 PDF,必须在 <input type="text"/> 中显示它

这是我的代码:

var files = evt.target.files; // FileList object

// files is a FileList of File objects. List some properties.
for (var i = 0, f; f = files[i]; i++) {
    console.log(f.name);
    console.log(f.type);
    console.log(f.size);

    //Update document info
    $("#document_filename").find("input").val(f.name);
    $("#document_mimetype").find("input").val(f.type);


    var reader = new FileReader();

    // Closure to capture the file information.
    reader.onloadend = (function(theFile) {
        return function(e) {
        content = e.target.result.replace(/^data:[^;]*;base64,/, "");
        console.log(content.length);
        $("#document_content").find("input").val(content);
        a = document.getElementById("document_content").getElementsByTagName("input")[0];
        a.value = content;
        console.log(a.value.length);
        };
    })(f);

    // Read in the image file as a data URL.
            reader.readAsDataURL(f);

}

当我上传一个 1.5MB 的大文件时,我的控制台显示:

    contrat.pdf             // The file name
    application/pdf         // The file type
    1510788                 // The file size
    2014384                 // The length of the b64 content
    524288                  // The length of string once inserted in the input box??

有人可以向我解释我在截断这些数据方面做错了什么吗?

谢谢,

【问题讨论】:

  • 首先要确保document.getElementById("document_content").getElementsByTagName("input")[0] 返回与$("#document_content").find("input").val(content) 相同的元素。你为什么要这样做?其次,您对<input> 有任何验证吗? maxlength?
  • 嗨,它返回的是相同的。我这样做是因为我正在编写 Jquery,并且当我输入框被截断时,我已经在本机 js 中编写了这一行以避免 jquery 错误。而且我仍然有同样的行为......
  • HTML 代码丢失。

标签: javascript html input truncate


【解决方案1】:

正如page 中所述,至少在 Chrome 上,input 文本类型的最大长度似乎是 524288。这就是你所拥有的......

我建议你把你的价值储存在另一个地方!


编辑:

实现因浏览器而异:在 FF (v32) 上,我的长度可以大于 524288(我已经测试到 10.000.000),但在 Chrome 上,即使我们增加了maxlength 属性,它也被限制为 524288 .

WebKit 也有一个关于这个问题的公开票:https://bugs.webkit.org/show_bug.cgi?id=44883

【讨论】:

  • 感谢您的信息。这就是我要找的……但你怎么理解? maxlength 的默认值是 524288 吗?或者最大值绝对是524288?你建议存储它什么?文本区域?
  • 为什么需要显示?只能存储到某个 JS 变量中?
  • 我确实需要展示。用户可以编辑这个值(例如从另一个输入框复制/粘贴它...)
  • 复制/粘贴二进制数据???也许提出一个允许将此值添加到剪贴板的按钮,但该值的显示似乎很奇怪。顺便说一句,我已经用一些评论更新了我的答案......
  • 请注意,W3Schools 的声明并未参考任何规范或标准。在 HTML5 或各种 DOM 标准中没有这样的限制。 is there a max size to the length of a hidden input in html 的答案可能很有用。因此,虽然 524288 在某些浏览器中可能是一个限制,但它并没有在任何地方指定,并且可能在不同的浏览器中有所不同,甚至是同一浏览器的不同版本。
猜你喜欢
  • 1970-01-01
  • 2015-04-18
  • 2015-08-15
  • 2016-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-20
  • 1970-01-01
相关资源
最近更新 更多