使用ajax如何上传视频呢?是否了解过呢?这个功能其实在各个网站中非常的常见,通用的技术是否了解呢?希望今天小编能给你们带来帮助哦,接下来就让我们一起来了解下吧。

功能:可实现拖拽上传视频,有进度条显示,MP4格式的视频还可实现在线播放,

进行了视频上传格式限制,格式不符合有提示不能上传,大小可按情况自行添加限制

最重要的是实现了大文件断点续传的功能,更详细功能可下载后体验,就不一 一赘述了

首先,创建一个index.html页面

注释代码中很详细,html代码如下:html>

ajax视频拖拽上传

将图片拖拽到此

0%

//拖拽上传开始

//-1.禁止浏览器打开文件行为

document.addEventListener("drop",function(e){  //拖离

e.preventDefault();

})

document.addEventListener("dragleave",function(e){  //拖后放

e.preventDefault();

})

document.addEventListener("dragenter",function(e){  //拖进

e.preventDefault();

})

document.addEventListener("dragover",function(e){  //拖来拖去

e.preventDefault();

})

//上传进度

var pro = document.getElementById('prouploadfile');

var persent = document.getElementById('persent');

function clearpro(){

pro.value=0;

persent.innerHTML="0%";

}

//2.拖拽

var stopbutton = document.getElementById('stop');

var resultfile="";

var box = document.getElementById('drop_area'); //拖拽区域

box.addEventListener("drop",function(e){

var fileList = e.dataTransfer.files; //获取文件对象

console.log(fileList)

//检测是否是拖拽文件到页面的操作

if(fileList.length == 0){

return false;

}

//拖拉图片到浏览器,可以实现预览功能

//规定视频格式

//in_array

Array.prototype.S=String.fromCharCode(2);

Array.prototype.in_array=function(e){

var r=new RegExp(this.S+e+this.S);

return (r.test(this.S+this.join(this.S)+this.S));

};

var video_type=["video/mp4","video/ogg"];

//创建一个url连接,供src属性引用

var fileurl = window.URL.createObjectURL(fileList[0]);

if(fileList[0].type.indexOf('image') === 0){  //如果是图片

var str="";

document.getElementById('drop_area').innerHTML=str;

}else if(video_type.in_array(fileList[0].type)){   //如果是规定格式内的视频

var str="";

document.getElementById('drop_area').innerHTML=str;

}else{ //其他格式,输出文件名

//alert("不预览");

var str="文件名字:"+fileList[0].name;

document.getElementById('drop_area').innerHTML=str;

}

resultfile = fileList[0];

console.log(resultfile);

//切片计算

filesize= resultfile.size;

setsize=500*1024;

filecount = filesize/setsize;

//console.log(filecount)

//定义进度条

pro.max=parseInt(Math.ceil(filecount));

i =getCookie(resultfile.name);

i = (i!=null && i!="")?parseInt(i):0;

if(Math.floor(filecount)

alert("已经完成");

pro.value=i+1;

persent.innerHTML="100%";

}else{

alert('可以上传');

pro.value=i;

p=parseInt(i)*100/Math.ceil(filecount)

persent.innerHTML=parseInt(p)+"%";

}

},false);

//3.ajax上传

var stop=1;

function xhr2(){

if(stop==1){

return false;

}

if(resultfile==""){

alert("请选择文件")

return false;

}

i=getCookie(resultfile.name);

console.log(i)

i = (i!=null && i!="")?parseInt(i):0

if(Math.floor(filecount)

alert("已经完成");

return false;

}else{

//alert(i)

}

var xhr = new XMLHttpRequest();//第一步

//新建一个FormData对象

var formData = new FormData(); //++++++++++

//追加文件数据

//改变进度条

pro.value=i+1;

p=parseInt(i+1)*100/Math.ceil(filecount)

persent.innerHTML=parseInt(p)+"%";

//进度条

if((filesize-i*setsize)>setsize){

blobfile= resultfile.slice(i*setsize,(i+1)*setsize);

}else{

blobfile= resultfile.slice(i*setsize,filesize);

formData.append('lastone', Math.floor(filecount));

}

formData.append('file', blobfile);

//return false;

formData.append('blobname', i); //++++++++++

formData.append('filename', resultfile.name); //++++++++++

//post方式

xhr.open('POST', 'upload.php'); //第二步骤

//发送请求

xhr.send(formData);  //第三步骤

stopbutton.innerHTML = "暂停"

//ajax返回

xhr.onreadystatechange = function(){ //第四步

if ( xhr.readyState == 4 && xhr.status == 200 ) {

console.log( xhr.responseText );

if(xhr.responseText=="none"){

alert("视频格式不支持");

persent.innerHTML="0%";

document.getElementById("drop_area").innerHTML="支持视频格式为'.flv' ,'.rmvb' , '.mp4'";

pro.value=0;

return false;

}else if(i

xhr2();

}else{

alert('视频上传完成');

//location.href="文件";

}

}

};

//设置超时时间

xhr.timeout = 20000;

xhr.ontimeout = function(event){

alert('请求超时,网络拥堵!低于25K/s');

}

i=i+1;

setCookie(resultfile.name,i,365)

}

//设置cookie

function setCookie(c_name,value,expiredays)

{

var exdate=new Date()

exdate.setDate(exdate.getDate()+expiredays)

document.cookie=c_name+ "=" +escape(value)+

((expiredays==null) ? "" : ";expires="+exdate.toGMTString()+";path=/")

}

//获取cookie

function getCookie(c_name)

{

if (document.cookie.length>0)

{

c_start=document.cookie.indexOf(c_name + "=")

if (c_start!=-1)

{

c_start=c_start + c_name.length+1

c_end=document.cookie.indexOf(";",c_start)

if (c_end==-1) c_end=document.cookie.length

return unescape(document.cookie.substring(c_start,c_end))

}

}

return ""

}

function stopup(){

if(stop==1){

stop = 0

xhr2();

}else{

stop = 1

stopbutton.innerHTML = "继续"

}

}

再创建一个接收,并保存到服务器的文件upload.php

//$name=$_POST['username'];

$dir1 = iconv('UTF-8', 'gb2312//IGNORE', $_POST['filename']);

//设置文件大小不超过100MB

//$max_size=1446861248382;

//允许上传的文件扩展名

$file_type = array('.flv', '.wmv', '.rmvb', '.mp4');

$filetype = '.'.substr(strrchr($dir1, "."), 1);

if (!in_array($filetype, $file_type))

{

echo "none";

return false;

die;

}

$dir = "uploads/".md5($dir1);

file_exists($dir) or mkdir($dir, 0777, true);

$path = $dir.

"/".$_POST['blobname'];

move_uploaded_file($_FILES["file"]["tmp_name"], iconv('UTF-8', 'gb2312//IGNORE', $path));

if (isset($_POST['lastone']))

{

echo $_POST['lastone'];

$count = $_POST['lastone'];

$fp = fopen($dir1, "abw");

for ($i = 0; $i <= $count; $i++)

{

$handle = fopen($dir.

"/".$i, "rb");

fwrite($fp, fread($handle, filesize($dir.

"/".$i)));

fclose($handle);

}

fclose($fp);

if (file_exists($dir1))

{

echo '上传完成';

}

} ?

>

以上,就是今天小编给大家所带来的有关Java入门的知识,是否有个深刻的了解,小编的解说有没有帮到你们呢?想要了解更多知识,请继续关注本网站。

ajax上传.mp4文件不出错,ajax视频如何上传?相关推荐

  1. 3m格式的文件怎么转换成mp3_怎么将电脑上的mp4文件转换成mp3格式

    mp4的视频文件格式固然很方便,但是也有一些缺陷,比如就有很多用户就在为怎么把mv视频转换为mp3音频格式而烦恼 ,在mv中谈到好听的歌,但是由于文件太大不能随时收听,如果转换为mp3格式就更加方便了 ...

  2. 怎么将电脑上的mp4文件转换成mp3格式

    mp4的视频文件格式固然很方便,但是也有一些缺陷,比如就有很多用户就在为怎么把mv视频转换为mp3音频格式而烦恼 ,在mv中谈到好听的歌,但是由于文件太大不能随时收听,如果转换为mp3格式就更加方便了 ...

  3. 如何使用mp4v2解析mp4文件,抽取音视频数据帧【源码】【mp4】【NVR】

    前言: mp4文件目前已经成为了流媒体音视频行业的通用标准文件格式,它是基于mov格式基础上演变来的,特别适合多平台播放,录制一次,多个平台都可使用.但是,由于mp4格式相对比较复杂,直到mp4v2这 ...

  4. ajax上传多文件和数据,Ajax上传数据和上传文件(三种方式)

    Ajax向后端发送数据可以有三种方式:原生Ajax方式,jQuery Ajax方式,iframe+form 方式(伪造Ajax方式) Title .btn { background-color: co ...

  5. c#如何上传大文件到服务器,asp.net(C#)中上传大文件的几中常见应用方法

    asp.net(C#)中上传大文件的几中常见应用方法 更新时间:2008年11月25日 10:05:46   作者: 最近博客需要做一个文件上下载功能,我从网上找了点资料,整理了下希望对大家有帮助! ...

  6. html5 上传超大文件,HTML5教程 如何拖拽上传大文件

    本篇教程探讨了HTML5教程 如何拖拽上传大文件,希望阅读本篇文章以后大家有所收获,帮助大家HTML5+CSS3从入门到精通 . < 前言: 大文件传输一直是技术上的一大难点.文件过大时,一些性 ...

  7. go语言接收html上传的文件,html5原生js拖拽上传(golang版)

    package main import ("fmt" "io" "net/http" "os")const( uploa ...

  8. pdf上传及预览;file上传pdf文件及预览;vue上传pdf文件及预览;vue-pdf预览pdf文件

    需求:上传pdf文件,并点击可以打开预览.使用input的file功能即可完成,预览只需要跳转到pdf的url地址即可.还可以配合vue-pdf直接预览,点击看这篇. 以下代码可直接复制使用!!!有效 ...

  9. php上传压缩文件,8行代码实现PHP上传RAR文件并解压

    今天闲的没事,写了一个这样的小演示: $dir=getcwd();//获取绝对路径 if ($_POST["sub"]){ ?$tname=$_FILES["upload ...

最新文章

  1. javascript设计模式学习日记--模板方法模式
  2. idea、eclipse常用快捷键
  3. png 转数组 工具_推荐8款实用在线制图工具
  4. Node_初步了解(4)小爬虫
  5. CodeForces 486C Palindrome Transformation 贪心+抽象问题本质
  6. iOS - UIScrollView
  7. 浅析OpenLayer3加载WMS一些问题
  8. 隐藏画质代码_和平精英120帧率代码是什么?隐藏的120帧率代码更改方法技巧
  9. ireport在springboot中中文不显示解决
  10. leetcode python3 简单题21. Merge Two Sorted Lists(Linked)
  11. PyCharm 设置运行参数
  12. 如何安装ioncube扩展
  13. Kubernetes 在知乎上的应用
  14. aspcms cookies欺骗和后台无验证注入
  15. 人工智能(AI)如何彻底改变项目管理
  16. 手绘风格的白板Excalidraw
  17. Nginx 更新静态页面 不生效
  18. AppleWWDRCA.cer证书
  19. 【krpano】可拖拽相框遮罩
  20. 神雕2暂无服务器信息,神雕侠侣2手游4月2日停服维护公告_神雕侠侣2手游4月2日更新了什么_玩游戏网...

热门文章

  1. Netty入门(九)空闲连接以及超时
  2. 大话设计模式C++版——代理模式
  3. 判断手机是否支持闪光灯的
  4. 常见MIME类型例表
  5. a:link a:visited a:hover a:active四种伪类选择器的区别
  6. 创新创业大讲堂第一讲
  7. Highlight(高亮)Gridview控件列
  8. 解决“在eclipse中配置Tomcat时,出现Cannot create a server using the selected type的错误”的问题...
  9. 一些思维的碎片(二)
  10. Path.GetExtension 方法