JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法

废话不多说了,直接给大家贴代码了,具体代码如下所示:

// 上传目标触发点

<input type="file" class="upvideo" name="upvideo" id="fileupload1" />

// 引入插件

<script type="text/javascript" src="{$IMG}/bstage/js/jquery.form.js" language="javascript"></script>

/**方法调用**/

setFileUpload({

name: 'fileupload1',

backfun: upback1,

beforefun: checkUp1,

loadfun:loadup,

phpUrl: '/ossphp/php/get.php?ft=video'

});

// 上传前验证

function checkUp1(n){

// 查看视频大小(mb)

var fileObj = document.getElementById(n).files[0];

var relSize = parseInt(fileObj.size/1024/1024);

if(relSize > 10){ // 大于10mb

alert('提示','视屏超过10MB,请重新上传!');

return false;

}

// 查看视频类型

var tv_id =document.getElementById(n).value;//根据id得到值

var index= tv_id.indexOf(".");

tv_id=tv_id.substring(index).toLowerCase();

if(tv_id!=".rb"&&tv_id!=".rmvb"&&tv_id!=".mp4"&&tv_id!=".flv"){

alert("提示","不是指定视频格式,重新选择");

return false;

}

return true;

}

//上传中

function loadup(){

}

// 上传成功后操作

function upback1(data){

// data 成功后的参数

}

/**上传功能封装**/

function setFileUpload(options){

var n = options.name;

var phpUrl = options.phpUrl;

var backfun = options.backfun;

var beforefun = options.beforefun;

var loadfun = options.loadfun;

var accessid = '';

var accesskey = '';

var host = '';

var policyBase64 = '';

var signature = '';

var callbackbody = '';

var filename = '';

var dirname = '';

var expire = 0;

var upflag = true;

if(phpUrl==null || phpUrl==''){console.log('phpurl is null');return false;}

if(n==null || n==''){console.log('object is null');return false;}

var backfun1 = $.isFunction(backfun) ?

backfun :

function(success, error){

console.log('no backfun');

};

var beforefun1 = $.isFunction(beforefun) ?

beforefun :

function(success, error){

return true;

};

var loadfun1 = $.isFunction(loadfun) ?

loadfun :

function(success, error){

return true;

};

var obj = $('#'+n);

obj.change(function(){

if(beforefun1(n)){

if(n=="fileupload1"){

fileEmb1(n);

}else if(n == 'fileupload2'){

fileEmb2(n);

}else if(n == 'fileupload3'){

fileEmb3(n);

}

}

});

function fileEmb1(n){

//oss add

$("#"+n).attr('name','file');

var file1 = $("#"+n).val();

var fileName = getFileName(file1);

phpUrl = phpUrl + '&fname='+fileName;

get_signature();

var ldot = fileName.lastIndexOf(".");

var filetype = fileName.substring(ldot + 1);

$("#"+n).wrap("<form id='myupload1' action='"+host+"' method='post' enctype='multipart/form-data'></form>");

$("#myupload1").prepend("<input type='hidden' value='' name='name' id='name'></input><input type='hidden' value='"+dirname+"."+filetype+"' name='key' ></input><input type='hidden' value='"+policyBase64+"' name='policy' id='policy'></input><input type='hidden' value='"+accessid+"' name='OSSAccessKeyId' id='OSSAccessKeyId'></input><input type='hidden' value='200' name='success_action_status' id='success_action_status' ></input><input type='hidden' value='"+callbackbody+"' name='callback' id='callback'></input><input type='hidden' value='"+signature+"' name='signature' id='signature'></input>");

//speed_width进度条类

//percent进度数字类

//load_content上传区域

$('#myupload1').ajaxSubmit({

dataType: 'json', //数据格式为json

data:'',

beforeSend: function() {

loadfun1();

if(!upflag)return false;

upflag=false;

},

uploadProgress: function(event, position, total, percentComplete) {

$('.upck_b').hide();

$('.videspeed').show();

percentComplete = percentComplete>=100?99:percentComplete;

var percentVal = percentComplete + '%'; //获得进度

$('.speed_num').css('width',percentVal);

$('.persent_em').html(percentComplete);

},

success: function(data) { //成功

$('.load_content').html('<em >图片上传</em>');

//上传成功后还原

$("#"+n).attr('name','');

setFileUpload(options);

upflag=true;

backfun1(data);

},

error:function(xhr){ //上传失败

$('.load_content').html('<em >图片上传</em>');

upflag=true;

}

});

}

function getFileName(path){

var pos1 = path.lastIndexOf('/');

var pos2 = path.lastIndexOf('\\');

var pos = Math.max(pos1, pos2)

if( pos<0 )

return path;

else

return path.substring(pos+1);

}

now = timestamp = Date.parse(new Date()) / 1000;

new_multipart_params = '';

function send_request(){

var xmlhttp = null;

if (window.XMLHttpRequest)

{

xmlhttp=new XMLHttpRequest();

}

else if (window.ActiveXObject)

{

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

if (xmlhttp!=null && phpUrl)

{

//phpUrl = '/ossphp/php/get.php?ft=resources';

xmlhttp.open( "GET", phpUrl, false );

xmlhttp.send( null );

return xmlhttp.responseText;

}

else

{

alert("Your browser does not support XMLHTTP.");

}

};

function get_signature()

{

//可以判断当前expire是否超过了当前时间,如果超过了当前时间,就重新取一下.3s 做为缓冲

now = timestamp = Date.parse(new Date()) / 1000;

//if (expire < now + 3)

//{

body = send_request()

var obj = eval ("(" + body + ")");

host = obj['host']

policyBase64 = obj['policy']

accessid = obj['accessid']

signature = obj['signature']

expire = parseInt(obj['expire'])

callbackbody = obj['callback']

dirname = obj['dir']

return true;

//}

};

}

注:里面的细节还可以继续封装

以上所述是小编给大家介绍的JavaScript 上传文件(psd,压缩包等),图片,视频功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

以上是 JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法 的全部内容, 来源链接: utcz.com/z/313851.html

回到顶部