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']取出第二次送到后端的文件名称了。

看:

时间: 2024-09-07 22:51:57

DJANGO和UIKIT结合,作一个有进度条的无刷新上传功能的相关文章

ASP.NET2.0:Ilungasoft.Framework.Web之基于Callback的无刷新上传进度条控件[带源码]

asp.net|web|控件|上传|刷新|无刷新 共享一个基于Callback的无刷新上传进度条控件的源码.本控件使用的HttpMoudule基于宝玉的一个上传进度条的sample,这里封装为一个控件,方便使用.无需任何代码,只需设置web.config,添加HttpModule的引用,再将控件拖到页面就行.页面中的文件保存操作和传统的asp.net文件上传完全一样.可以设置属性上传过程中出错或上传成功时跳转到其它页面.兼容IE,Firefox,Opera.其它环境没测试,不过因为是基于Asp.

jquery插件uploadify实现带进度条的文件批量上传_jquery

有时项目中需要一个文件批量上传功能时,个人认为uploadify是快速简便的解决方案,分享给大家供大家参考,具体如下 先上效果图: 具体代码如下: 在页面中如下 完整页面代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <

一个PHP无刷新上传文件程序代码

一个最原始最简单的iframe上传例子: 前台上传页面index.html,主要是一个表单与一个js回调函数.上传文件时,form表单的method. enctype属性必须和下面代码一样.然后将target的值设为iframe的name,这样就可以实现无刷新上传文件.  代码如下 复制代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml

改进文件上传的进度条,实时反映上传情况

上传 asp中使用组件上传时,有点麻烦就是不知道上传进度是多少,虽然有的提供了上传进度条,例如abcupload(下载地址:http://www.websupergoo.com)已经提供了显示当前上传状态的方法,里面就有专门的实例(在安装目录的Examples下面的progressupload.htm),它是提交数据的同时弹出一个反映进度的页面(progressbar.asp),然后通过这个页面自刷新来每隔一点时间获取当时的上传状态,然后把它们显示出来,但是用页面自刷新的方法效率比较低,不不好调

应用Response.Write实现带有进度条的多文件上传

 本教程来学习asp.net利用RESPONSE.WRITE的这个特性实现上传文件时实时进度的显示,本文的学习重点是asp.net页面的生命周期中前后台的交互.     前几天,写过一篇随笔"使用RESPONSE.WRITE实现在页面的生命周期中前后台的交互".说是交互,实际上也主要是在ASP.NET的页面周期中从后台利用RESPONSE.WRITE向前台即时的推送内容. 该篇随笔算是对上一篇文章的实际应用,利用RESPONSE.WRITE的这个特性实现上传文件时实时进度的显示.如对R

一个老个写的无组件上传

上传|无组件 <!--#include file="../lib/filelib.asp"--><%Response.write "<title>上传文件至当前文件夹</title>"Response.Write "<body bgcolor=""#D6D3CE"" leftmargin=""0"" topmargin="

一个老个写的无组件上传,呵呵。有意思。

上传|无组件 <!--#include file="../lib/filelib.asp"--><%    Response.write "<title>上传文件至当前文件夹</title>"    Response.Write "<body bgcolor=""#D6D3CE"" leftmargin=""0"" topmarg

分享一个.NET版的多选文件上传操作示例

文件上传,无刷新上传,文件批量上传,批量无刷新上传,这些词这年头好像非常多,不管那种上传能满足实际的需求就是好的,一般上传文件时,点文件浏览框,只能选 择单个文件,如果要上传多个,浏览多次,然后点击批量上传就可以了,也很好的,也不刷新也有进度显示,完全不错的.网上也有关于上传文件的能够多选的例子,点浏 览时可以按住ctrl键或者shift键选择多个,然后上传.但是好像这样的.NET版的不多,朋友发我一个整理过的Demo,之后我又稍微整理了下,觉得还好,可以分享给大家一 下,好与不好就不说,因为没

Asp无组件上传进度条解决方案_应用技巧

一.无组件上传的原理我还是一点一点用一个实例来说明的吧,客户端HTML如下.要浏览上传附件,我们通过<input type="file">元素,但是一定要注意必须设置form的enctype属性为"multipart/form-data": <form method="post" action="upload.asp" enctype="multipart/form-data">&l