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

发布于 2024-11-06 05:12:53 字数 250 浏览 1 评论 0原文

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

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

我希望浏览器打开它,

我想它必须 File f=new File('file:///G:/Users/txt.txt');

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

there is many examples of reading local files using html5 but by choosing from list of files , my problem is that i want to create the file object manually , think about i have a file with the link

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

i want the browser to open it ,

i think it have to File f=new File('file:///G:/Users/txt.txt');

my question is how to create/initialize the file object using file path ?!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

四叶草在未来唯美盛开 2024-11-13 05:12:53

由于 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);
}); 

I have used below workaround since File inherits blob interface.

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);
}); 
野の 2024-11-13 05:12:53

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

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

There really is no way to create a file without permission from the user. A button or something will need to be pressed. You would need to create a data:uri in order for it to save. You can find more information using a web search or checking out http://en.wikipedia.org/wiki/Data_URI_scheme (not a complete source but can show what is possible). This is very limited depending on phone and OS. Data URI are limited while using IE.

When it is triggered for download, it saves to t he default location or user specified. You may also want to look into vendor/OS specific API Calls that can do as you are describing. But may need to verify permissions prior to actually allowing access.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文