【问题标题】:how to create/initialize the file object using file path html5如何使用文件路径 html5 创建/初始化文件对象
【发布时间】:2011-08-21 11:19:49
【问题描述】:

有很多使用 html5 读取本地文件的例子,但是通过从文件列表中选择,我的问题是我想手动创建文件对象,想想我有一个带有链接的文件

file:///G:/Users/txt.txt

我想让浏览器打开它,

我认为它必须归档f=new File('file:///G:/Users/txt.txt');

我的问题是如何使用文件路径创建/初始化文件对象?!

【问题讨论】:

  • 如果由于文件系统差异(UNIX 与 Win 约定等)和安全性而无法做到这一点,我不会感到惊讶。我当然不希望我的浏览器在我不知道的情况下覆盖我的某些文件。 :)
  • 使用 html5 开发移动应用,尝试将一些数据保存到 SDCard 并再次检索
  • 我认为您可能更容易依赖 localStorage。见dev.w3.org/html5/webstorage
  • 我存储的数据随着时间的推移变得非常大,我想把它保存在 SD 上

标签: javascript file html path


【解决方案1】:

由于 File 继承了 blob 接口,我使用了以下解决方法。

var getFileBlob = function (url, cb) {
        var xhr = new XMLHttpRequest();
        xhr.open("GET", url);
        xhr.responseType = "blob";
        xhr.addEventListener('load', function() {
            cb(xhr.response);
        });
        xhr.send();
};

var blobToFile = function (blob, name) {
        blob.lastModifiedDate = new Date();
        blob.name = name;
        return blob;
};

var getFileObject = function(filePathOrUrl, cb) {
       getFileBlob(filePathOrUrl, function (blob) {
          cb(blobToFile(blob, 'test.jpg'));
       });
};

getFileObject('img/test.jpg', function (fileObject) {
     console.log(fileObject);
}); 

【讨论】:

  • 我必须使用 XMLHttpRequest 即使是本地文件路径?
  • 这在android上也能用吗,在iOS上也能用,但android似乎不喜欢......?
【解决方案2】:

没有用户的许可,真的没有办法创建文件。需要按下按钮或其他东西。您需要创建一个 data:uri 才能保存。您可以使用网络搜索或查看http://en.wikipedia.org/wiki/Data_URI_scheme 找到更多信息(不是完整的来源,但可以显示可能的内容)。根据手机和操作系统,这非常有限。使用 IE 时数据 URI 受到限制。

当它被触发下载时,它会保存到默认位置或用户指定的位置。您可能还想查看可以按照您描述的方式执行的供应商/操作系统特定 API 调用。但可能需要在实际允许访问之前验证权限。

【讨论】:

    猜你喜欢
    • 2018-03-09
    • 2019-08-31
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 2016-11-15
    相关资源
    最近更新 更多