利用layui前端框架实现对不同文件夹的多文件上传

问题场景:

普通的input标签实现多文件上传时,只能对同一个文件夹下的多个文件进行上传,如果要同时上传两个或多个文件夹下的文件,是无法实现的。这篇文章就是利用layui中的插件,解决这个问题。

普通多文件上传标签:

前端 运用layui

操作步骤:
1、进入layui首页,下载整个组件
2、下载完成后,把名字为layui的文件夹放到你的项目中进行引用
3、引用layui.js和layui.css实现功能
4、可点击可进入layui文件上传实例的官方网址进行参考,来以上三步的前端代码实现

HTML代码块:

<div class="layui-upload"><button type="button" class="layui-btn layui-btn-normal"style="margin-left: 30px"id="testList">选择多文件</button><button type="button" class="layui-btn" id="testListAction"style="display: inline; margin-left: 26px;">开始上传</button><div class="layui-upload-list col-md-12"><table class="layui-table" style="margin: 0 0 0 0"><thead style="display: none"><tr><th>文件名</th><th>大小</th><th>状态</th><th>操作</th></tr></thead><tbody id="demoList"></tbody></table></div>
</div>

JS代码块


<script>layui.use('upload', function () {var $ = layui.jquery, upload = layui.upload;//多文件列表示例var demoListView = $('#demoList'), uploadListIns = upload.render({elem: '#testList', url: '/task_mgm/taskinfo_upload', accept: 'file', multiple: true, auto: false, bindAction: '#testListAction', choose: function (obj) {var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列//读取本地文件obj.preview(function (index, file, result) {var tr = $(['<tr id="upload-' + index + '">', '<td>' + file.name + '</td>', '<td>' + (file.size / 1014).toFixed(1) + 'kb</td>', '<td>等待上传</td>', '<td>', '<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>', '<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>', '</td>', '</tr>'].join(''));//单个重传tr.find('.demo-reload').on('click', function () {obj.upload(index, file);});//删除tr.find('.demo-delete').on('click', function () {delete files[index]; //删除对应的文件tr.remove();uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选});demoListView.append(tr);});}, done: function (res, index, upload) {if (res.code == 0) { //上传成功var tr = demoListView.find('tr#upload-' + index), tds = tr.children();tds.eq(2).html('<span style="color: #5FB878;">上传成功</span>');{#tds.eq(3).html(''); //清空操作#}return delete this.files[index]; //删除文件队列已经上传成功的文件}this.error(index, upload);}, error: function (index, upload) {var tr = demoListView.find('tr#upload-' + index), tds = tr.children();tds.eq(2).html('<span style="color: #FF5722;">上传失败</span>');tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传}});})
</script>

Python后端 代码块

UPLOAD_FOLDER = 'static_files/task_mgm/'
# 设置允许上传的文件类型
ALLOWED_EXTENSIONS = set(['txt', 'png', 'jpg', 'xls', 'JPG', 'PNG', 'xlsx', 'gif', 'GIF', 'ppt', 'pptx', 'doc', 'docx', 'csv', 'sql', 'py','rar'])# 用于判断文件后缀
def allowed_file(filename):return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS@task_mgm.route('/taskinfo_upload',method=['post'])
@login_required
def taskINfo_upload_fun():if request.method == 'POST':# 上传文件的键名是fileif 'file' not in request.files:logging.debugp('No file part')return jsonify({'code': -1, 'filename':'', 'msg':'No file part'})# 获取文件对象file = request.files['file']# 若用户没有选择文件就提交,提示‘No selected file’if file.filename == '':logging.debug('No selected file')return jsonify({'code': -1', 'filename':'', 'msg':'No selected file'})else:try:if file and allowed_file(file.filename):origin_file_name = file.filenamelogging.debug('filename is %s' % origin_file_name)file_dir = os.path.join(os.getcwd(), UPLOAD_FOLDER)if os.path.exists(file_dir):logging.debug('%s path exist' % file_dir)passelse:logging.debug('%s path not exist' % file_dir)os.makedirs(file_dir)file.save(os.path.join(file_dir, filename))return jsonify({'code':0, 'filename':origin_file_name, 'msg': 'save successfully'})else:logging.debug('%s not allowed' % file.filename)return jsonify({'code':-1, 'filename':'', 'msg': 'File not allowed'})except Exception as e:logging.debug(e)return jsonify({'code':-1, 'filename':'', 'msg':'Error occurred'})else:return jsonify({'code':-1, 'filename': '', 'msg':'Method not allowed'})

下面简单展示一下效果图:

到此为止,前后端代码都有了,可以粘去直接使用!!!!

转载于:https://www.cnblogs.com/We612/p/10621230.html

利用layui前端框架实现对不同文件夹的多文件上传相关推荐

  1. 在Ubuntu终端使用mkdir创建文件夹后Xftp不能上传文件到文件夹中的问题解决方法

    问题描述 在Ubuntu终端上使用mkdir创建文件夹后使用Xftp上传文件失败 原因分析: 权限问题 解决方案: chmod 777 File

  2. python 上传文件夹,python – 使用Flask上传文件夹/文件

    我可以通过这个例子上传一个带烧瓶的文件: 但我不知道如何上传文件夹或一些文件.我搜索过,我发现了这个: Uploading multiple files with Flask.最后,我得到了如何上传多 ...

  3. js使用input上传文件夹、拖拽上传文件夹并将文件夹结构展示为树形结构

    一.实现效果 左侧区域支持选择一个系统中的文件夹,或者将文件夹拖拽到这个区域进行上传,右侧区域可以将文件夹的结构展示为树形结构. 二.代码实现 由于需要使用树形插件zTree,这个插件是依赖于jque ...

  4. MacOS下载服务器的文件/文件夹到本地、上传本地文件到服务器

    1.从服务器下载文件或文件夹 如果要下载xx.cpp文件,则在本地终端输入: scp 用户名@主机名:xx/xxx/xx.cpp 本地路径 如果要下载dir文件夹,则在本地终端输入: scp -r 用 ...

  5. 码云上传文件夹_码云上传本地文件夹,码云只能上传20个文件的突破方法

    码云官方地址:https://gitee.com/ 很多人不知道码云上传本地文件夹怎么操作,或者如何突破码云只能上传20个文件限制的问题,今天就来说说这事的方法吧. 简介: 码云是媲美GitHub的代 ...

  6. vue对文件夹进行拖拽上传完整流程(文件夹中超出100个文件)

    前言 上个文章介绍了多图片压缩,多图片可以通过直接多选图片进行拖拽,也可以通过直接拖拽文件夹进行解析得到多图片,接下来直接上代码 先展示文件拖拽后对文件的解析效果 图片文件夹 图片文件夹解析 大文件夹 ...

  7. app开发上传文件夹到服务器,uni-app 上传(图片上传实战)

    uni.uploadFile(OBJECT) 将本地资源上传到开发者服务器,客户端发起一个 POST 请求,其中 content-type 为 multipart/form-data. 如页面通过 u ...

  8. ESP32开发 3.bat批处理文件,批量删除编译后的build文件夹,方便Git上传分享

    前言   每次执行 idf.py build 后,编译器都会在工程目录下新建一个build目录,用于存放编译中间及生成的文件,文件非常多体积非常大,通常一个工程的build约有130MB左右.而这个文 ...

  9. ajax文件夹,的jQuery/AJAX上传图像并保存到文件夹

    我发现一些代码,能够上载的图像,并显示其缩略图.但是,我想将图像保存到特定的文件夹. 可以使用什么jQuery代码或ajax代码将原始图像保存到我选择的文件夹中? 下面是完整的代码: .input-f ...

最新文章

  1. 在线html转ipa,iphone在线安装 ipa 应用:利用 itms-services 协议实现 iOS 应用程序在线安装功能...
  2. TP查询搜索函数的find select get value
  3. 交换机端口灯闪烁频率一样_思创易控cetron-新品S2024GE 24口全千兆非网管交换机即将上市!...
  4. 企业大数据应用成熟度如何?大多数企业处于自嗨中
  5. 【Maven实战】依赖的聚合和版本管理
  6. vb.net机房收费系统之组合查询
  7. XStream使用总结
  8. WINDOWS下如何让NPAPI插件生效
  9. 郑州大学远程教育学院C语言程序设计题库(二)
  10. UOS NetworkManager切换Networking
  11. 计网 - 计算机网络开篇
  12. 换把人体工学椅,缓解久坐写代码的老腰吧~
  13. Unity实现Text BestFit文本超框时再缩小字体
  14. 【一句日历】2019年8月
  15. 相忘于江湖—记一位朋友
  16. 车载网络信号的编码方式
  17. 【计算机毕业设计】528口腔管家平台
  18. 【uni-app】uniapp项目优化方式及建议
  19. PreScan里动力学模型的2D和3D的区别
  20. onedrive手机客户端_OneDrive手机版

热门文章

  1. linux vim 执行shell命令行,Linux中vim和shell
  2. php如何导入数据,““php中如何将execl的数据导入到数据库中
  3. python做一个系统代码_python初学者,用python3实现基本的学生管理系统代码实例...
  4. python矩形填充颜色_在Python中找到所有用0填充的矩形
  5. Hex hsl 转换 php,关于 RGB,HEX,HSL 颜色相互转换
  6. linux的i o模型,浅谈Linux 网络 I/O 模型简介(图文)
  7. 一不小心就掉大啦《数组使用注意》
  8. Java 字符,整型,字符串三者转换
  9. 习题6-5 使用函数验证哥德巴赫猜想 (20 分)
  10. LeetCode 454. 四数相加 II 思考分析