zoukankan      html  css  js  c++  java
  • HTML5中的input type为file控件限制上传文件类型及扩展

    简单介绍

    input file控件限制上传文件类型如下:
    1.文件类型中间用,分开;
    2.html和htm这样的要写成两个;

    3实例:

    <input type="file"  name="filePath" accept=".jpg,.jpeg,.doc,.docx,.xls,.xlsx,.pdf">

     如果想在手机上实现拍照上传,添加如下代码:

     <input type="file" capture="camera" accept="image/*" name="filetest">

    重要的就是这句话:capture="camera" accept="image/*"

    下面精简代码(备注),On mobile devices, including Mobile: Android 3+, Chrome 16+, Safari 6+, Firefox 10+, Blackberry 10+, while not part of the specifications, the camera and microphone can be accessed:

    <input type="file" accept="image/*;capture=camera">
    <input type="file" accept="video/*;capture=camcorder">
    <input type="file" accept="audio/*;capture=microphone">

    地址:https://www.wufoo.com/html5/attributes/20-accept.html

    扩展

    1.通过file上传的视频在本地进行预览

    实现代码如下:

    html代码:

    <input type="file" id="file" accept="video/*;capture=camcorder" />
    <video id="video" style="100%;height:200px;" controls="true"></video>

    JS代码:

    /**
     * 建立一个预览图片的url blob对象
     * @param {object} fileObj文件域Dom对象
     * @return {Array} urlArray图片url数组
     */
    var getObjectURL = function(fileObj) {
        var url = null;
        var file;
        var urlArray = [];
        if (fileObj.files) {
            for(var num = 0, j = fileObj.files.length; num < j; num ++){
                file = fileObj.files[num];
                if (window.createObjectURL != undefined) { // basic
                    url = window.createObjectURL(file);
                } else if (window.URL != undefined) { // mozilla(firefox)
                    url = window.URL.createObjectURL(file);
                } else if (window.webkitURL != undefined) { // webkit or chrome
                    url = window.webkitURL.createObjectURL(file);
                }
               urlArray.push(url); 
            } 
        }
        return urlArray;
    };
    
    var fileEle = document.getElementById('file');
    var video_element=document.getElementById('video');
    
    fileEle.addEventListener('change',function(e){
         var url = getObjectURL(e.target)[0];
         video_element.src = url;
    },false);

    当然这儿也可以用FileReader.readAsDataURL读取指定Blob或File的内容。

    var fileEle = document.getElementById('file');
    var video_element=document.getElementById('video');
    
    fileEle.addEventListener('change',function(e){
        var reader = new FileReader();
        reader.onload = (evt) => {
              video_element.src = evt.target.result;
        };
        reader.readAsDataURL(e.target.files[0]);
    },false);

    可参考这篇文章:《搞清Image加载事件(onload)、加载状态(complete)后,实现图片的本地预览,并自适应于父元素内(完成)

    2.如何使用HTML5实现利用摄像头拍照上传功能

    最近突然想起,怎样用摄像头拍照实现,搜了一下,发现网上基本都是这样的文章,地址:https://www.cnblogs.com/xueyuwyz/p/6187117.html。

    基本代码都这样:

    var video_element=document.getElementById('video');
    if(navigator.getUserMedia){ // opera应使用opera.getUserMedianow
         navigator.getUserMedia('video',success,error);  //success是回调函数,当然你也可以直接在此写一个匿名函数
    }
    function success(stream){
        video_element.src=stream;
    }
    function error(e){
        alert(e);
    }

    最主要的都是navigator.getUserMedia,但打印navigator没有getUserMedia方法。(待后面验证更新)

  • 相关阅读:
    网上搜索整理的前端开发工程师面试题附答案
    Python-RabbitMQ-topic(细致消息过滤的广播模式)
    Python-RabbitMQ-direct(广播模式)
    Python-RabbitMQ-fanout(广播模式)
    rabbitmq中关于exchange模式type报错
    Python-RabbitMQ(持久化)
    Python-RabbitMQ(简单发送模型)
    python-gevent模块实现socket大并发
    python-gevent模块(自动切换io的协程)
    python-greenlet模块(协程)
  • 原文地址:https://www.cnblogs.com/moqiutao/p/6364223.html
Copyright © 2011-2022 走看看