• django model 上传下载文件


    import os
    from demo1 import settings
    
    
    def upload_to(instance, filename):
        return os.path.join(settings.BASE_DIR,"static", instance.name, filename) # 注意此处没有斜杠
    
    
    class FF(models.Model):
        id = models.AutoField(primary_key=True)
        pdf = models.FileField(upload_to=upload_to, verbose_name="文件上传")
        name = models.CharField(max_length=256, blank=True, null=True)
    

      

    def post(self,request):
        data = request.POST
        data = dict(data)
        print(data) # {'id': ['1'], 'name': ['张三']}
        real_dict = {}
        for k,v in data.items():
            real_dict[k] = v[0]
        file = request.FILES.get("file",None)
        if not file:
            return HttpResponse("没有文件!")
    
        obj = FF.objects.create(pdf=file,**real_dict)
        print(obj) # FF object (1)
        print(type(obj)) #<class 'app01.models.FF'>
        print(obj.__dict__) 
        # {'_state': <django.db.models.base.ModelState object at 0x106abec18>, 'id': '1', 'pdf': '/Users/。。。。。1/static/张三/sql查询语句.pdf', 'name': '张三'}
        return HttpResponse("ok!")
    
    path('down/', down),
    

      

    from django.http import FileResponse
    from django.utils.encoding import escape_uri_path
    from demo1 import settings
    def down(request):
    data = request.GET
    data = dict(data)
    print(data)
    real_dict = {}
    for k, v in data.items():
    real_dict[k] = v[0]

    url = settings.BASE_DIR+settings.STATIC_URL+real_dict["name"]+"/"+real_dict["file"]
    file = open(url,"rb")
    response = FileResponse(file)
    response['Content-Type'] = 'application/octet-stream'
    response['Content-Disposition'] = "attachment; filename*=utf-8''{}".format(escape_uri_path(real_dict["file"]))
    return response

      

        def get(self,request):
            data = request.GET
            data = dict(data)
            print(data)
            real_dict = {}
            for k,v in data.items():
                real_dict[k] = v[0]
            obj = FF.objects.filter(id=real_dict["id"]).values("id","name","pdf").first()
            print(obj)
            print(type(obj))
            return JsonResponse({"data":obj,"msg":"ok"})
    

      

      

  • 相关阅读:
    MySQL组提交(group commit)
    MySQL 热快问题解决
    Mysql 高可用集群PXC
    向量的点积(标量积、内积)
    BitmapData.threshold()方法
    Unity 自定义导入时切割Sprite
    匀变速直线运动的速度与位移的关系
    1.1.2 三角形余弦定理
    ccc切割刚体
    Unity 获取指定资源目录下的所有文件
  • 原文地址:https://www.cnblogs.com/realadmin/p/11932094.html
Copyright © 2020-2023  润新知