0

在使用 Windows 8 应用程序时,我注意到我可以使用以下方式打开并获取对 File 对象的引用:

// Markup
<input type='file' id='myfile'/>

// JavaScript
var fInput = document.getElementById('myFile');
fInput.onchange = function (e) {
    var dataSource = e.target;
    var file = dataSource.files[0]; // object of type 'File'
}

但是,我想向用户展示一个文件选择器,而无需按下“浏览”按钮。所以我尝试像这样使用 FilePicker 类:

var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.pickSingleFileAsync().then(function (file) {
    // in this case, file is a 'StorageFile' object
});

所以问题是,可以pickSingleFileAsync以某种方式返回一个File对象而不是StorageFile?

4

1 回答 1

1

使用MSApp.createFileFromStorageFile。忽略此处的文档错误。它告诉 api 做什么的相反。

// TODO - more code is required here to initialize file open picker. 
// refer the file picker sample
var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.pickSingleFileAsync().then(function (storageFile) {
    // ignore when file pick is cancelled
    if (!storageFile)
        return;
    var file = MSApp.createFileFromStorageFile(storageFile);
});
于 2013-05-30T04:31:03.277 回答