我的意思是,当用户从他们的系统中选择视频文件时,让网页显示他们想要上传的文件。
我已经使用FileAPI JS预览图像文件了。我想用FileAPI JS做视频文件。
(所以,它必须在我的客户端工作)
谢谢&答案很感激:))
答案 0 :(得分:5)
您可以使用FileReader或createObjectURL。他们都会完成工作,但FileReader在浏览器中有更广泛的支持。
createObjectURL
将同步运行并返回一个Blob URL,一个引用内存中文件的短字符串。你可以在使用完毕后立即释放它。
FileReader
将异步运行,需要回调,提供数据URI,一个代表整个文件的更长的字符串。这可能非常大,将在Javascript垃圾回收中从内存中释放。
以下是首次尝试createObjectURL
并回退到FileReader
的示例。 (请提供您自己的错误检查等)。
var video = document.getElementById('video'),
input = document.getElementById('input');
input.addEventListener('change', function (evt) {
var reader = new window.FileReader(),
file = evt.target.files[0],
url;
reader = window.URL || window.webKitURL;
if (reader && reader.createObjectURL) {
url = reader.createObjectURL(file);
video.src = url;
reader.revokeObjectURL(url); //free up memory
return;
}
if (!window.FileReader) {
console.log('Sorry, not so much');
return;
}
reader = new window.FileReader();
reader.onload = function(evt) {
video.src = evt.target.result;
};
reader.readAsDataURL(file);
}, false);
这里的工作示例:http://jsbin.com/isodes/1/edit
Mozilla有一个more detailed article,其中包含有关如何获取文件后如何上传的说明。
IE10支持这两种方式,但IE9不支持,因此您无需预览即可回退到常规表单上传。