HTML5中的input type为file控件限制上传文件类型及扩展 搞清Image加载事件(onload)、加载状态(complete)后,实现图片的本地预览,并自适应于父元素内(完成)

前端之家收集整理的这篇文章主要介绍了HTML5中的input type为file控件限制上传文件类型及扩展 搞清Image加载事件(onload)、加载状态(complete)后,实现图片的本地预览,并自适应于父元素内(完成)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

简单介绍

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

3实例:

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

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

  1. capture="camera"="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:

  1. ="image/*;capture=camera">
  2. ="video/*;capture=camcorder"="audio/*;capture=microphone">

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

扩展

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

实现代码如下:

HTML代码

  1. id="video/*;capture=camcorder" />
  2. video id="video" style="width:100%;height:200px;" controls="true"></video>

JS代码

  1. /**
  2. * 建立一个预览图片的url blob对象
  3. * @param {object} fileObj文件域Dom对象
  4. * @return {Array} urlArray图片url数组
  5. */
  6. var getObjectURL = function(fileObj) {
  7. var url = null;
  8. var file;
  9. var urlArray = [];
  10. if (fileObj.files) {
  11. for(var num = 0,j = fileObj.files.length; num < j; num ++){
  12. file = fileObj.files[num];
  13. if (window.createObjectURL != undefined) { // basic
  14. url = window.createObjectURL(file);
  15. } else if (window.URL != undefined) { mozilla(firefox)
  16. url = window.URL.createObjectURL(file);
  17. } if (window.webkitURL != undefined) { webkit or chrome
  18. url = window.webkitURL.createObjectURL(file);
  19. }
  20. urlArray.push(url);
  21. }
  22. }
  23. return urlArray;
  24. };
  25. var fileEle = document.getElementById('file');
  26. var video_element=document.getElementById('video');
  27. fileEle.addEventListener('change',(e){
  28. var url = getObjectURL(e.target)[0];
  29. video_element.src = url;
  30. },false);

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

  1. (e){
  2. var reader = new FileReader();
  3. reader.onload = (evt) => {
  4. video_element.src = evt.target.result;
  5. };
  6. reader.readAsDataURL(e.target.files[0]);
  7. },1)">false);

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

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

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

基本代码都这样:

  1. if(navigator.getUserMedia){ opera应使用opera.getUserMedianow
  2. navigator.getUserMedia('video',success,error); success是回调函数,当然你也可以直接在此写一个匿名函数
  3. }
  4. success(stream){
  5. video_element.src=stream;
  6. }
  7. error(e){
  8. alert(e);
  9. }

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

猜你在找的HTML5相关文章