php 上传整个文件夹,php上传整个文件夹 - osc_br82o7vz的个人空间 - OSCHINA - 中文开源技术交流社区...

有一个需求就是实现文件夹整个上传。而不是单个文件上传

但是只找到这个办法。适合谷歌的。有更好的。希望大神告知!

按钮可以自己设计

上传文件夹

input里加这个属性webkitdirectory就是默认可以上传文件夹了。谷歌浏览器可以。其他浏览器好像不行

js代码

var treeid = 1;

var uploadcount=0;//这次上传文件总数

var backcount=0;

//文件上传触发时间

$("#uoloadfile").change(function(){

var $list = $('.upload-html');

var files_arr=[];

var formData = new FormData();

files_arr = document.getElementById("uoloadfile").files;//获取上传的文件的数据

var files=[];

var name="";

var xhr = new XMLHttpRequest();

uploadcount=files_arr.length;

for (var i=0;i

{

name=files_arr[i].name;

files=files_arr[i];

formData.append("cid",treeid);

formData.append("fname",files.webkitRelativePath);

formData.append("file",files);

getajax(formData,name);//执行上传文件ajax

}

});

function getajax(formData,name){

$("#thelist2").css("display","block");

$.ajax({

url:'{:get_page_action("morefileupload")}',

type: "POST",

data: formData,

async:true,

processData: false,  // 不处理数据

contentType: false,

beforeSend: function(){

$('.progress').css('color','#1AB394').show();

},

success:function(result){

backcount++;

if(result.code==1){

$('.progress').html(result.msg).css('color','black').fadeOut(10000,function(){$(this).html('')});

$('.filename').css('color','black').fadeOut(10000,function(){$(this).html('')});

}

if(backcount==uploadcount){

$('#thelist2').css('display','none');

setTimeout(function(){

window.location.reload();

},1000);

}

},

xhr: function(){

var xhr = $.ajaxSettings.xhr();

if(onprogress && xhr.upload) {

xhr.upload.addEventListener("progress", function () { onprogress(event,name) }, false);//监听文件上传进度,name文件名

return xhr;

}

},

error:function(){

$('.progress').html(result.msg).css('color','black').fadeOut(10000,function(){$(this).html('')});

$('.filename').css('color','black').fadeOut(10000,function(){$(this).html('')});

$('#thelist2').css('color','black').fadeOut(10000,function(){$(this).html('')});

setTimeout(function(){

window.location.reload();

},1000);

}

});

//实现进度条

function onprogress(evt,name){

var loaded = evt.loaded;

var tot = evt.total;

var txt1="

"+name+"

";

var txt2="

txt2+='style=width:';

txt2+=+Math.floor(100*loaded/tot)+'%'+">";

txt2+=Math.floor(100*loaded/tot)+'%';

txt2+="

";

$("#progress-mask").append(txt1,txt2);

}

}

---------------------

原文链接:https://blog.csdn.net/hexiaoniao/article/details/89231143

效果展示:

在页面中选择好相应的上传目录,点击粘贴上传按钮,数据即可快速开始上传

0f948c7a7712249547640deb8701e5e6.png

1b7b2b6ebb8e1725929d0f70c23a40bf.png

数据库记录

f5b0ac08509e2b17143bbb34aec7adb9.png

Mac控件安装教程与演示说明:

Linux控件安装教程与演示说明:

控件包下载:

示例下载:

在线教程:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值