• 文件上传


    一,form表单的方式上传

    1,upload.html

    {% block css %}
    {% endblock %}
    
    {% block content %}
    <h1>编辑老师</h1>
    <form action="/upload.html" method="post" enctype="multipart/form-data">
        <input name="user" type="text" />
        <input type="file" name="fafafa" />
    </form>
    <div>
        {% for src in img_list%}
        <img id="imgs" src="/{{src}}">
        {%endfor%}
        
    </div>
    {% endblock %}
    
    
    {% block js %}
    {% endblock %}

    2,处理函数

    import os
    def handUpload(request):
        if request.method=='GET':
            img_list=models.Img.objects.all()
            return render(request,'upload.html',{'img_list':img_list})
            
        elif request.method=='POST':
            user=request.POST.get('user')
            fafafa=request.POST.get('fafafa')
            obj=request.FILES.get('fafafa')
            f=open(os.path.join('static','upload',obj.name),'wb')
            for chunj in obj.chunks():
                f.write(chunk)
            f.close()
            model.Img.objects.create(path=file_path)
            return redict('upload.html')

    二,ajax方式提交

    1,FormData对象

    传统的传数据方法:

      xml.send("k1=v1; k2=v2;")

      $.ajax(

        url:

        data:{ 'k1':'v1', ' k2':'v2' }

      )

    FormData方式:

    //新建一个formdata对象
    dict=new FormData()
    daict.append('k1','v1');
    dictt.appent('k2','v2');
    dict.append('fafaffa',文件对象)

    1,前端代码

    {% block css %}
    {% endblock %}
    
    {% block content %}
    <h1>编辑老师</h1>
    
        <input name="user" type="text" />
        <input type="file" name="fafafa" />
       <button onclick="Uploadjq()">jq提交</button>
    <div>
        {% for src in img_list%}
        <img id="imgs" src="/{{src}}">
        {%endfor%}
        
    </div>
    {% endblock %}
    
    
    {% block js %}
        <script>
            function Uploadjq(){
                var dic = new FormData();
                dic.append('user','v1');
                dic.append('fafafa',document.getElementById('img').filters[0]);
                $.ajax({
                    url:'/upload.html',
                    type:'POST',
                    data:dic,
                    processData:false,    //保持原来的数据不便
                    contentType:false,
                    dataType:'json',
                    success:function(arg){
                        //arg={'status':true,'path':file_path}
                        if(arg.status){
                            var img=document.createElement('img');
                            img.src='/'+arg.path;
                            $('#imgs').append(img);
                        }
                    }
                })
            }
        </script>
    {% endblock %}

    2,处理函数

    import os
    def handUpload(request):
        if request.method=='GET':
            img_list=models.Img.objects.all()
            return render(request,'upload.html',{'img_list':img_list})
            
        elif request.method=='POST':
            user=request.POST.get('user')
            fafafa=request.POST.get('fafafa')
            obj=request.FILES.get('fafafa')
            f=open(os.path.join('static','upload',obj.name),'wb')
            for chunj in obj.chunks():
                f.write(chunk)
            f.close()
            ret={'status':true,'path':file_path}
            model.Img.objects.create(path=file_path)
            return httprespondes(ret)

     三,iframe与表单form的结合

    iframe实现的效果与Ajax相似,都是悄悄的上传,但本质不同。

    1,upload.html文件

    {% block css %}
    {% endblock %}
    
    {% block content %}
    <h1></h1>
    <form action="/upload.html" method="post" target="iframe_1" enctype="multipart/form-data">
        <iframe name="iframe_1" src=""></iframe>
        <!--
            作者:2827363471@qq.com
            时间:2020-09-26
            描述:iframe的实质
            
            #document
            <html>
        <head></head>
        body{'path':"static\upload\4.jpg","status":true}
    </html>
        -->
        <input name="user" type="text" />
        <input type="file" name="fafafa" />
        <input type="submit" value="iframe提交" />
    </form>
    <div>
        {% for src in img_list%}
        <img id="imgs" src="{{src}}">
        {%endfor%}
        
    </div>
    {% endblock %}
    
    
    {% block js %}
        <script>
            //获取iframe的内容
            var str_Json=$('#iframe_1').contents().find('body').text();
            var obj=JSON.parse(str_Json);
            if(obj.status){
                var img=document.createElement('img');
                img.src="/"+obj.path;
                $('#imgs').append(img);
            }
        </script>
    {% endblock %}
  • 相关阅读:
    游标后面select 带有in时
    Bootstrap 表单控件一(单行输入框input,下拉选择框select ,文本域textarea)
    Bootstrap内联表单
    七、struts2后缀
    六、默认action
    五、指定多个配置文件
    四、动态方法调用
    三、Action搜索顺序
    二、访问Servlet Api
    一、struts入门案例
  • 原文地址:https://www.cnblogs.com/gjx1212/p/13728574.html
Copyright © 2020-2023  润新知