zoukankan      html  css  js  c++  java
  • Python Django文件上传

    文件保存本地

    view视图

    def update(request):
        if request.method =='GET':
            return render(request,'update.html')
        else:
            myFile = request.FILES.get("img")
        #上传的文件是一个对象
            print(myFile.name)
            print(myFile.size)
            f = open(myFile.name,'wb')
            for files in myFile.chunks():
                f.write(files)
            return render(request,'update.html')
    

    前端

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="update.html" method="post" enctype="multipart/form-data">
        {% csrf_token %}
        文件上传:<input type="file" name="img">
        <input type="submit">
    </form>
    
    </body>
    </html>
    

    文件上传到数据库

    首先 需要在setting中设置文件的存储路径 

    #一般创建static文件
    MEDIA_ROOT = os.path.join(BASE_DIR,"static/...")
    #在models中创建数据库
    class Files(models.Model):
        photo_url = models.ImageField(
            upload_to='imgae'
        )

    view视图
    def files_ulr(request):
    if request.method =='GET':
    return render(request,'photo.html')
    else:
    myFile = request.FILES.get('img')
    photo_url = models.Files.objects.create(photo_url=myFile)
    return HttpResponse("ok")

    通过Ajax上传文件

     

    #HTML中编辑JQ语句
    form action="update.html" method="post" enctype="multipart/form-data">
        {% csrf_token %}
        头像<input type="file" name="touxiang" id="file">
        <br>
        <button id="btn">提交</button>
    </form>
    <script>
        $("#btn").click(function(){
            {#ajax上传文件的时候需要这个类型,它会将添加的键值对加工成formata的类型#}
            var formdata = new FormData();
            {##添加键值对的方法是append,注意写法,键和值之间使用逗号隔开#}
            formdata.append('file',$("#file")[0].files[0]);
            {#csrf_tocken#}
            formdata.append('csrfmiddlewaretoken',$('[name=csrfmiddlewaretoken]').val());
            console.log(formdata)
            $.ajax({
                'url':'update.html',
                'type':'post',
                'data':formdata,
                {#不处理数据#}
                processData:false,
                contentType:false,
                success:function(arg){
                    console.log(arg)
                }
            })
        })
    </script>
    
    #view中操作
        if request.method =='GET':
            return render(request,'update.html')
        else:
            # name = request.POST.get('uname')
            file = request.FILES.get('touxiang')
            file_name = file.name
            # 拼接文件路径
            # path = os.path.join('static','img',file_name)
            with open(file_name,'wb') as f:
                for i in file.chunks():
                    f.write(i)
            return render(request, 'update.html')

      

  • 相关阅读:
    SQL Server循环插入
    【转】Entity Framework 6 Code First 实践系列(1):实体类配置-根据依赖配置关系和关联
    【转】iis7下站点日志默认位置
    如何设置输入IP地址就直接访问到某一个网站
    面向接口编程
    Lambda表达式
    关于单体化和属性文件的说明
    cesium-长度测量和面积测量
    Cesium官方教程13--Cesium和Webpack
    Cesium官方教程12--材质(Fabric)
  • 原文地址:https://www.cnblogs.com/toby-yu/p/12373100.html
Copyright © 2011-2022 走看看