如何使用Javascript创建二进制文件?

时间:2019-06-27 00:54:41

标签: javascript ruby-on-rails ruby file xmlhttprequest

我有一个Rails应用程序,该应用程序需要将文件从Javascript发送到另一个页面,这是我的本地主机服务器中的文件。问题是,我不了解如何用Javascript制作文件

这里发生了奇妙的魔术,允许我从可爱的页面viewstl中渲染stl文件

<iframe id="vs_iframe" src="https://www.viewstl.com/?embedded&bgcolor=white&color=purple" style="border:0;margin:0;width:100%;height:100%;"></iframe>

在这里,我必须从本地主机中获取文件并将其发送到viewstl

<script type = 'text/javascript'>
    document.getElementById('vs_iframe').onload=function()
    {
#First, I make an http get request to my own server to get the file
        const Http = new XMLHttpRequest();
        var f;

        Http.open("GET", 'http://localhost:3000<%= @pedido.file_url %>');
        Http.send();
#Then, I understand that here I have the file in Http.response because if I put it in an alert I see a lot of binary code in my page
        Http.onreadystatechange = (e) => {
#Here is the alert I told you about
            alert(Http.response)
#Here, I guess I'm creating an beatyful file, but It apears to be an bad formated file because...
            f = new File([Http.response], '<%= @pedido.file.filename.to_s %>');
#Because when I send this file to viewstl.com it does not recognize the file. It say "Can't parse file"
            document.getElementById('vs_iframe').contentWindow.postMessage({msg_type:'load', file:f}, '*');
        }
    }

</script>

问题是,如果我在浏览器中转到渲染“ http://localhost:3000 <%= @ pedido.file_url%>”,我实际上会得到我的stl文件。如果我使用另一个脚本(一个带有输入标签的文件从磁盘中获取该文件)将该stl文件发送到viewstl,则它呈现的很好,问题是,如果我尝试使用XMLHTTPRequest GET从本地主机获取该文件,我可以t修改应由viewstl使用的文件。

这是我收到的警报

solid 2                                                                         
1eJ��싗=�[}?Af
C���D�t�BE
Cm��D�k�B�  C�=�DT��B�O��݉�=�[}?�   C�=�DT��BE
Cm��D�k�B�"
C"��D`b�B`U���=�[}?�   C�=�DT��B�"
C"��D`b�B

以此类推。其实我不明白为什么文本中首先有“ solid 2”,然后是二进制代码。我不知道stl文件,我只需要渲染它

0 个答案:

没有答案