相关疑难解决方法(0)

使用HTML5/Javascript生成并保存文件

我最近一直在摆弄WebGL,并且让Collada读者工作了.问题是它很慢(Collada是一种非常冗长的格式),所以我将开始将文件转换为更易于使用的格式(可能是JSON).事实是,我已经有了用Javascript解析文件的代码,所以我也可以将它用作我的导出器!问题在于节省.

现在,我知道我可以解析文件,将结果发送到服务器,并让浏览器从服务器请求文件作为下载.但实际上服务器与这个特定的进程没有任何关系,为什么要让它参与其中呢?我已经在内存中拥有所需文件的内容.有什么方法可以使用纯javascript向用户提供下载吗?(我怀疑它,但不妨问......)

并且要明确:我没有在用户不知情的情况下尝试访问文件系统!用户将提供一个文件(可能通过拖放),脚本将转换内存中的文件,并提示用户下载结果.就浏览器而言,所有这些都应该是"安全"的活动.

[编辑]:我没有提及它,所以回答"Flash"的海报是有效的,但我正在做的部分是尝试强调纯HTML5可以做什么...所以Flash是在我的情况下.(虽然对于任何正在使用"真实"网络应用程序的人来说,这是一个非常有效的答案.)在这种情况下,除非我想要涉及服务器,否则看起来我运气不好.不管怎么说,还是要谢谢你!

javascript html5 download

305
推荐指数
12
解决办法
36万
查看次数

JS Promise - 立即从返回Promise的函数中检索一些数据

任何人都可以推荐一种模式,以便立即从返回Promise的函数中检索数据吗?

我的(简化)示例是一个AJAX预加载器:

loadPage("index.html").then(displayPage);
Run Code Online (Sandbox Code Playgroud)

如果这是下载一个大页面,我希望能够检查发生了什么,并可能在稍后阶段使用XHR abort()取消该过程.

我用过的loadPage函数(在Promises之前)返回一个id,让我稍后再这样做:

var loadPageId = loadPage("index.html",displayPage);
...
doSomething(loadPageId);
cancelLoadPage(loadPageId);
Run Code Online (Sandbox Code Playgroud)

在我的基于Promise的新版本中,我认为cancelLoadPage()会拒绝()原始的loadPage()Promise.

我考虑了一些我不喜欢的选项.是否有一种普遍接受的方法来实现这一目标?

javascript ajax function promise

9
推荐指数
1
解决办法
1013
查看次数

如何使用JavaScript写入文件(用户目录)?

我想使用html5和javascript或jquery从chrome(所有版本)写入任何文件的txt.

我尝试过FileSystem API,我试过的代码是:

function onFs(fs) {
 console.log('test');
  fs.root.getFile('log.txt', {create: true, exclusive: true},
      function(fileEntry) {
        // fileEntry.isFile === true
        // fileEntry.name == 'log.txt'
        // fileEntry.fullPath == '/log.txt'

        fileEntry.getMetaData(function(md) {
          console.log(md.modificationTime.toDateString());
        }, onError);

      },
      onError
  );
}

window.webkitRequestFileSystem(TEMPORARY, 1024*1024 /*1MB*/, onFs);

但不行.

有没有办法写入文件?

javascript jquery html5

6
推荐指数
1
解决办法
7627
查看次数

逐块下载文件客户端块

我正在使用WebRTC将文件发送到已连接的对等方,并且正在将文件分块发送。但是,我在弄清楚如何让对等方逐块地流式传输时保存/下载文件时遇到了麻烦。

我在网上找到的所有示例都建议这样做:

// sender
dataConnection.send({
   'file': file
});

// receiver
dataConnection.on('data', function(fileData) {

    var dataView = new Uint8Array(fileData);
    var dataBlob = new Blob([dataView]);
    var url = window.URL.createObjectURL(dataBlob);

    // create <a>
    var link = document.createElement('a');
    link.href = url;
    link.download = fileName;
    document.body.appendChild(link);

    // trigger the download file dialog
    link.click();
}
Run Code Online (Sandbox Code Playgroud)

但是,这种方法不支持获取文件的大块并在出现每个大块时对其进行写...它必须等待整个文件在发送方读取并发送到接收方。

我想做的是这样的:

// sender
for (var i = 0; i < fileSize; i += chunkSize) {

    var fileReader = new FileReader();

    // read next chunk
    var blob = file.slice(start, end);
    ... …
Run Code Online (Sandbox Code Playgroud)

html5 blob chunking fileapi webrtc

5
推荐指数
1
解决办法
7142
查看次数

标签 统计

html5 ×3

javascript ×3

ajax ×1

blob ×1

chunking ×1

download ×1

fileapi ×1

function ×1

jquery ×1

promise ×1

webrtc ×1