首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在JavaScript FileReader API中传递现有服务器文件

在JavaScript FileReader API中传递现有服务器文件
EN

Stack Overflow用户
提问于 2017-03-20 04:33:35
回答 2查看 1.3K关注 0票数 0

它是读取和显示STL文件功能的一部分。如您所见,它接受用户使用文件输入上传的文件,并将其传递给使用openFile API读取文件的FileReader。

代码语言:javascript
运行
复制
window.addEventListener("load", function () {

    ...
    ...

    // file load
    var openFile = function (file) {
        console.log(file);
        var reader = new FileReader();
        reader.addEventListener("load", function (ev) {
            var buffer = ev.target.result;
            var geom = loadStl(buffer);
            scene.remove(obj);
            obj = new THREE.Mesh(geom, mat);
            scene.add(obj);
        }, false);
        reader.readAsArrayBuffer(file);
    };

    // file input button
    var input = document.getElementById("file");
    input.addEventListener("change", function (ev) {
        var file = ev.target.files[0];
        openFile(file);
    }, false);


}, false);

但是,我想将文件传递给服务器上存在的openFile

我试过使用:

代码语言:javascript
运行
复制
var file = new File ("myfile.stl");
openFile(file);

但不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-20 12:23:49

你想要的在概念上是错误的。

在您的用例中,所有文件读取行为都发生在本地机器(浏览器)中。如您所见,在寻址任何远程端点信息之前,FileReader api加载本地文件并在缓冲区中表示它。

您想要的是在本地JavaScript代码中操作远程文件,而不需要任何网络设置!

要么首先加载远程文件,然后在本地使用FileReader api,要么在服务器程序上执行文件操作,然后将结果返回给浏览器。

看一看文件API

文件API的一个用例似乎与您的需求相似,但实际上是另一种情况。

票数 1
EN

Stack Overflow用户

发布于 2017-03-21 08:01:27

以下是解决办法:

代码语言:javascript
运行
复制
window.addEventListener("load", function () {

        ...
        ...

        var openFile = function(file) {
            var xhr = new XMLHttpRequest();
            xhr.open('GET', file, true);
            xhr.responseType = 'arraybuffer';

            xhr.onload = function(e) {
                var buffer = this.response;
                var geom = loadStl(buffer);
                scene.remove(obj);
                obj = new THREE.Mesh(geom, mat);
                scene.add(obj);
            };

            xhr.send();
        };

        openFile('filename');

    }, false);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42895913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档