如何使用文件路径html5创建/初始化文件对象

Yah*_*hia 15 javascript html5 file path

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

file:///G:/Users/txt.txt
Run Code Online (Sandbox Code Playgroud)

我希望浏览器打开它,

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

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

Ash*_*ish 29

我使用了以下解决方法,因为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);
}); 
Run Code Online (Sandbox Code Playgroud)

  • 即使是本地文件路径,我也必须使用XMLHttpRequest? (4认同)
  • 这也适用于Android,在iOS上运行良好,但android似乎不喜欢它....? (2认同)

Jam*_*ams 2

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

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