Javascript 在我将dataUrl设置为文本区域的值后,浏览器和我的站点停止响应

Javascript 在我将dataUrl设置为文本区域的值后,浏览器和我的站点停止响应,javascript,forms,form-submit,data-uri,jszip,Javascript,Forms,Form Submit,Data Uri,Jszip,我现在正试图使用document.getElementById('fileContent').value=fileData将JSZip的dataUrl设置为textarea。但一旦我这么做了,网站和浏览器就毫无反应,没有任何错误。有人知道怎么回事吗?请确实需要帮助,谢谢你阅读我的问题 除了在document.getElementById('fileContent')之后,一切都进行得很顺利 即使我自己复制数据URL并将其粘贴到文本区域,我的网站和浏览器最终也停止了 我想在表单元素中设置值,并通

我现在正试图使用
document.getElementById('fileContent').value=fileData将JSZip的dataUrl设置为textarea。但一旦我这么做了,网站和浏览器就毫无反应,没有任何错误。有人知道怎么回事吗?请确实需要帮助,谢谢你阅读我的问题

  • 除了在
    document.getElementById('fileContent')之后,一切都进行得很顺利
  • 即使我自己复制数据URL并将其粘贴到文本区域,我的网站和浏览器最终也停止了
  • 我想在表单元素中设置值,并通过输入值发送数据

函数getfile(){
var zip=newjszip();
for(设i=0;i
DataURL通常很长,这可能会导致浏览器无响应。尝试console.log并检查是否发生了相同的行为它似乎
document.getElementById('fileContent')。value=fileData不是做我想做的事情的最佳方式。如果我使用console.log调用存储dataURL的变量,它就会工作。但如果我想通过表单提交方法发送dataURL。有没有更好的办法?顺便说一句,谢谢你尝试回答我的问题。有些浏览器在textarea中有大小限制支持,主要是64KB或其他。请参阅此链接。如果是这样,请使用xhr请求将zip发送到服务器,而不是表单提交。请使用AJAX和。如果您可以更改服务器端代码,那么甚至可以直接将此文件的内容作为二进制文件发送(即根本不将其作为data://URL读取,而是直接传递文件或Blob对象)。如果您真的不能(这将花费您文件大小的34%的带宽+268%的内存),那么仍然使用FormData并将您的data://URI追加到那里。DataURL通常很长,这可能会导致浏览器无响应。尝试console.log并检查是否发生了相同的行为它似乎
document.getElementById('fileContent')。value=fileData不是做我想做的事情的最佳方式。如果我使用console.log调用存储dataURL的变量,它就会工作。但如果我想通过表单提交方法发送dataURL。有没有更好的办法?顺便说一句,谢谢你尝试回答我的问题。有些浏览器在textarea中有大小限制支持,主要是64KB或其他。请参阅此链接。如果是这样,请使用xhr请求将zip发送到服务器,而不是表单提交。请使用AJAX和。如果您可以更改服务器端代码,那么甚至可以直接将此文件的内容作为二进制文件发送(即根本不将其作为data://URL读取,而是直接传递文件或Blob对象)。如果您真的不能(这将花费您文件大小的34%的带宽+268%的内存),那么仍然使用FormData并将您的data://URI附加到那里。
<textarea placeholder="Example Text" id="fileContent" name="fileContent" data-name="fileContent" class="w-input" spellcheck="false"></textarea>

<script>
function getfile() {
  var zip = new JSZip();

  for(let i = 0; i < file.length; i++){
      var caltor = i+1;
      var aFileName = "image"+caltor+".jpg";
      var aContent = dataURItoBlob(file[i]); 

      zip.folder("Image_folder").file(aFileName, aContent)
  }
  zip.generateAsync({type:"base64"})
  .then(function (content) {
      fileData = "data:application/zip;base64,"+content;
      document.getElementById('fileContent').value = fileData;
  });
}
</script>