如何预览用户想要在网站上传的视频文件(PHP,FiileAPI JS)

时间:2013-01-25 07:02:30

标签: wordpress file-upload web html5-video fileapi

我的意思是,当用户从他们的系统中选择视频文件时,让网页显示他们想要上传的文件。

我已经使用FileAPI JS预览图像文件了。我想用FileAPI JS做视频文件。

(所以,它必须在我的客户端工作)

谢谢&答案很感激:))

1 个答案:

答案 0 :(得分:5)

您可以使用FileReadercreateObjectURL。他们都会完成工作,但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不支持,因此您无需预览即可回退到常规表单上传。