zoukankan      html  css  js  c++  java
  • 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"})
    

      

      

  • 相关阅读:
    POJ 2159 Ancient Cipher 难度:0
    POJ 3299 Humidex 难度:0
    POJ 1503 Integer Inquiry 大数 难度:0
    POJ 2262 Goldbach's Conjecture 数学常识 难度:0
    POJ 1083 Moving Tables 思路 难度:0
    PAT 甲级 1126 Eulerian Path
    Java 大数运算
    PAT 甲级 1010 Radix
    PAT 甲级 1137 Final Grading
    PAT 甲级 1064 Complete Binary Search Tree
  • 原文地址:https://www.cnblogs.com/realadmin/p/11932094.html
Copyright © 2011-2022 走看看