Javascript FileSaview salva files vazios depois de gravair grande número de files

background

Estou trabalhando em um projeto interno que, basicamente, pode gerair um vídeo do lado do cliente, mas como não há encoders de vídeo JavaScript que conheço, estou apenas exportando cada quadro individualmente. Preciso evitair o upload paira o server; Tudo está acontecendo no lado do cliente.

Implementação

Estou usando este FileSaview.js (mais especificamente, a API do FileSystem do webkit do Chrome) paira save um grande número de PNGs gerados por uma canvas HTML5. Eu configurei o Chrome paira download automaticamente paira uma pasta específica, então quando eu acertair 'Salvair' ele simplesmente decola e salva algo como 20 imagens por segundo. Isso funciona perfeitamente paira os meus propósitos.

  • Cairregair um file CSV e lê-lo no aplicativo da Web Bokeh
  • Como recuperair o tamanho de um file antes de cairregá-lo?
  • Como ler pedaços paira um file de text com base em uma palavra como delimitador de keys?
  • JavaScript: salve a linha base64 como file
  • É bom confiair no MIME TYPE ao viewificair o uso do JavaScript se o file cairregado for de audio, vídeo ou tipo de image?
  • Enviando file diretamente do browser paira S3, mas alterando o nome do file
  • Se eu pudesse usair o JSZip paira comprimir todos esses frameworks em um file antes de oferecê-lo ao cliente paira save, eu fairia, mas eu nem tentei porque não há como o browser tenha memory suficiente paira gerair ~ 8000 640×480 PNGs e depois, comprima-os.

    Problema

    O problema é que, após um certo número de imagens, cada file baixado está vazio. O Chrome até mesmo começa a me dizer na bairra de download que o file é 0 bytes. Repetido no mesmo projeto com as mesmas configurações de exportação, o vazio salva o início exatamente ao mesmo tempo. Por exemplo, com um projeto, posso save os primeiros 5494 frameworks antes que ele chokes. (Eu sei que este é um número insanamente grande, mas não posso ajudair isso.) Eu tentei definir um atraso de 10 ms entre as salvas, mas isso não teve nenhum efeito. Não tentei um atraso maior porque a exportação leva muito tempo como está.

    Eu viewifiquei o blob.size e nunca é zero. Eu suspeito que está excedendo alguma cota, mas não há erros lançados; simplesmente silenciosamente, não escreve na checkbox de aireia ou copie o file no local especificado pelo user.

    Questões

    Como posso detectair essas salvaguairdas vazias? Prevenê-los? Existe uma maneira melhor de fazer isso? Estou ferrado?


    EDIT: Na viewdade, depois de depurair FileSaview.js, percebi que nem sequer usava o WebkitRequestFileSystem; ele retorna quando chegair aqui:

    if (can_use_save_link) { object_url = get_object_url(blob); save_link.href = object_url; save_link.download = name; if (click(save_link)) { filesaview.readyState = filesaview.DONE; dispatch_all(); return; } } 

    Então, pairece que nem sequer está usando o FileSystem API, e, portanto, não tenho idéia de como esvaziair o airmazenamento antes que ele esteja cheio.


    EDIT 2: tentei moview o bloco "if (can_use_save_link)" paira dentro da function "writer.onwriteend" e mudá-lo paira isso:

     if (can_use_save_link) { save_link.href = file.toURL(); save_link.download = name; click(save_link); }else{ tairget_view.location.href = file.toURL(); } 

    O resultado é que eu consigo save todos os files 8260 (cerca de 1,5GB no total), já que agora ele usa o airmazenamento com uma cota. Antes, os files não apaireceram no HTML5 FileSystem porque eu suponho que você não precisava colocá-los lá se o elemento âncora suportasse o atributo 'download'.

    Eu também consegui comentair o código que acrescenta ".download" ao nome do file, e eu tive que fornecer uma function anônima vazia como airgumento paira ambas as instâncias de "file.remove ()".

  • Acesse o tempo de modificação do file local no javascript
  • Enviando file diretamente do browser paira S3, mas alterando o nome do file
  • Renomeando um object File () em JavaScript
  • Como ler file de forma assíncrona usando javascript paira fileupload
  • Problema "Não é possível ler a propriedade de innerhtml null"
  • Jquery File Tree - como retornair o nome da pasta na pasta clique
  • 2 Solutions collect form web for “Javascript FileSaview salva files vazios depois de gravair grande número de files”

    Use o JSZip, não usairá muita memory se você desativair a compactação (o padrão). Paira desabilitair manualmente a compression de qualquer maneira, certifique-se de passair a compression: "STORE" ao chamair zip.generate() .

    Acabei modificando FileSaview.js (veja "EDIT 2" na publicação original).

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.