DJANGO和UIKIT结合,作一个有进度条的无刷新上传功能
以前作的上传,在糙了,所以在用户体验上改进一下。
同时,结合DJANGO作定位上传。
这其中分两步进行,第一次上传到TMP目录下,
第二次,将TMP下的文件转移到标准目录下。
form.py
file_path = forms.CharField(
required=True,
label=u"上传文件",
widget=forms.TextInput(
attrs={
'rows': 2,
'class': 'uk-width-1-2',
}
),
)
upload.html
{# file_path #}
<div class="uk-form-row">
<div class="uk-form-label">
{{ form.file_path.label_tag }}
{% for error in form.file_path.errors %}
<span class="uk-badge uk-badge-danger">{{ error }}</span>
{% endfor %}
</div>
<div id="upload-drop" >
{# <i class="uk-icon-cloud-upload uk-icon-medium "></i> 将文件拖拽至此或者 #}
<input id="upload-select" name="upload-select" type="file">
<input type="text" id="file_path" name="file_path" value="" hidden/>
</div>
<div id="progressbar" class="uk-progress uk-hidden">
<div class="uk-progress-bar" style="width: 0%;">0%</div>
</div>
</div>
<script>
$(function(){
var progressbar = $("#progressbar"),
bar = progressbar.find('.uk-progress-bar'),
settings = {
single: false,
filelimit: 1,
action: '/version/file_upload/', // upload url
allow : '*.(war|zip)', // allow war and zip
loadstart: function() {
bar.css("width", "0%").text("0%");
progressbar.removeClass("uk-hidden");
},
progress: function(percent) {
percent = Math.ceil(percent);
bar.css("width", percent+"%").text(percent+"%");
},
allcomplete: function(response) {
uploadfilename = response.replace(/\"/g,"")
bar.css("width", "100%").text("100%");
$("#upload-select").after("<div class='uk-alert' data-uk-alert> 已上传文件: <span class='uk-text-success'>" + uploadfilename + "</span></div>");
$("#file_path").attr("value", uploadfilename);
}
};
var select = UIkit.uploadSelect($("#upload-select"), settings),
drop = UIkit.uploadDrop($("#upload-drop"), settings);
});
</script>
views.py
def fileupload(request):
files = request.FILES.getlist('files[]')
file_name_list = []
for f in files:
destination = 'd:/temp/' # windows
# destination = '/tmp/' # linux
if not os.path.exists(destination):
os.makedirs(destination)
with open(destination+f.name, 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk)
file_name_list.append(f.name)
return render_to_json_response(','.join(file_name_list))
然后,在作总体提交时,就可以用file_path = form.cleaned_data['file_path']取出第二次送到后端的文件名称了。
看:

DJANGO和UIKIT结合,作一个有进度条的无刷新上传功能的更多相关文章
- jquery ajax php 无刷新上传文件 带 遮罩 进度条 效果的哟
在很多项目中都会叫用户上传东西这些的,自从接触了jquery 和ajax之后就不管做什么,首先都会想到这个,我这个人呢?是比较重视客户体验的,这次我这边负责的是后台板块,然后就有一块是要求用户上传照片 ...
- 带进度条的文件批量上传插件uploadify
有时项目中需要一个文件批量上传功能时,个人认为uploadify是快速简便的解决方案. 先上效果图: 一. 下载uploadify 从官网下载uploadify的Flash版本(Flash版本免费,另 ...
- python实现进度条--主要用在上传下载文件
在python中进行socket上传文件的时候使用进度条,然后在网上找了好久,找寻相关的进度的条的使用,看了几个,发现总是无法进行调用,主要原因是在进行上传文件的时候,每次传送的数据量是固定的,数据的 ...
- 应用Response.Write实现带有进度条的多文件上传
前几天,写过一篇随笔“使用RESPONSE.WRITE实现在页面的生命周期中前后台的交互”.说是交互,实际上也主要是在ASP.NET的页面周期中 从后台利用RESPONSE.WRITE向前台即时的推送 ...
- spring mvc + xmlHttpRequest2.0 实现无刷新上传文件,带进度条和剩余时间
1.springmvc支持文件上传,需要在spring-mvc.xml配置文件中加上下面的一段话: <!-- 支持上传文件 --> <bean id="multipartR ...
- ajax实现无刷新上传附件并且显示进度条的实例
首先:得把php.ini中的post_max_size和upload_max_filesize改成200M或更大(进度条好看效果,默认是2M) html和js代码: <!DOCTYPE html ...
- 打造 html5 文件上传组件,实现进度显示及拖拽上传,支持秒传+分片上传+断点续传,兼容IE6+及其它标准浏览器
老早就注册了博客园帐号,昨天才发现,连博客都没开,Github也是一样,深觉惭愧,赶紧潜个水压压惊`(*∩_∩*)′ 言归正传.大概许多人都会用到文件上传的功能,上传的库貌似也不少,比如(jQuery ...
- 一个Notification 进度条插件(android,NJS实现,直接就可使用)
参考文章:http://ask.dcloud.net.cn/article/503 源码地址下载 如题,分享一个Notification 进度条插件(android,用js调用原生api实现,直接就可 ...
- django下的ckeditor 5.0 文本编辑器上传功能。
完整的后台界面怎么可以没有文本编辑器,但是django的admin界面很疑惑,没有自带文本编辑器,好在网上有不少成型的库可以用 我用的是ckeditor编辑器,安装和配置我引用别人的博客 这篇博客配置 ...
随机推荐
- 删除织梦所有待审核稿件sql语句
先提醒一下 archives是dedecms主表addonarticle 新闻信息表 在dede后台"系统->SQL命令行工具"运行下以命令即可(注意,运行后未审核的数据全被 ...
- java新手笔记33 多线程、客户端、服务器
1.Mouse package com.yfs.javase; public class Mouse { private int index = 1; private boolean isLive = ...
- JetBRAINS 系列注册机
转载说明 本篇文章可能已经更新,最新文章请转:http://www.sollyu.com/1118/ 说明 这个是一国外的大牛写的一个 JetBRAINS 系列注册机,他里面包含了很多,我就不打字了. ...
- Fuck Flyme Theme
转载说明 本篇文章可能已经更新,最新文章请转:http://www.sollyu.com/fuck-flyme-theme/ 说明 本插件仅用于魅蓝Note, MX3, MX4, MX4 PRO它机型 ...
- 简单使用packetbeat
简单使用packetbeat 标签:packetbeat elasticsearch 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在前面两篇文章中记录了使用logstash来收集mysql的慢 ...
- OpenCV3读取视频或摄像头
我们可以利用OpenCV读取视频文件或者摄像头的数据,将其保存为图像,以用于后期处理.下面的实例代码展示了简单的读取和显示操作: // This is a demo introduces you to ...
- 对.Net WebSocket 和Socket的原理的思考
今早上班路上接到了一个朋友的微信信息,问我对WebSocket 是否熟悉,一楞,印象之中没有用过这个类....来到公司后,得空问了一下度娘,原来这是一个随着HTML5推出的一种新协议,意义在于能实现浏 ...
- C# 学习之旅(3) --- 会说话的简易计算器
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- PyQt 5.2 发布,此版本完全支持Qtv5.2.0
PyQt 5.2 发布,此版本完全支持Qtv5.2.0 :包括了新的 QtBluetooth,QtPositioning,QtMacExtras,QtWinExtras 和 Qt11Extras 模板 ...
- flex打印图片
<?xml version="1.0" encoding="utf-8"?><s:WindowedApplication xmlns:fx=& ...