DJANGO:开发一个上传图片的接口

编写html页面:

复制代码

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>上传图片</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
       <p align="center"><input type="file" name="filename" /></p>
       <p align="center"><input type="submit" value="上传" /></p>
</form>
</body>
</html>

复制代码

效果如图(太丑了):

img

编写view视图函数:

复制代码

def upload(request):
   if request.method == "GET":
       return render(request,"upload.html")
   if request.method == "POST":
       # TODO 获取上传文件的处理对象,通过对象获取里面文件名称和内容
       img = request.FILES.get("filename", None)
       print(img)
       # print(img.name)   # 获取文件名称
       # print(img.chunks) # 获取文件内容
       # 创建文件
       save_path = '{}/up_image/{}'.format(settings.MEDIA_ROOT,img.name)
       with open(save_path,'wb') as f:
           for content in img.chunks():
               f.write(content)
       # 报存到数据库
       FileUpload.objects.create(name=img.name)
       return HttpResponse("ok")

复制代码

添加modes模型生成数据库表:

复制代码

class FileUpload(models.Model):
   '''上传文件或图片'''
   name = models.CharField(max_length=30,
                           blank=True,
                           null=True,
                           verbose_name="名称")
   image = models.ImageField(upload_to="up_image",
                             blank=True,
                             null=True,
                             verbose_name="上传图片"
                            )
   file = models.FileField(upload_to="up_file",
                           blank=True,
                           null=True,
                           verbose_name="上传文件"
                          )
   add_time = models.DateTimeField(auto_now_add=True,
                                   verbose_name="上传时间")

   def __str__(self):
       return self.__doc__

   class Meta():  # TODO 后台显示中文
       verbose_name = "上传文件和图片"
       verbose_name_plural = verbose_name

复制代码

添加urls映射访问地址:

img

访问地址上传图片,抓包如图:

img

上传成功:

img

数据库存储的字段:

 

posted on 2022-08-10 08:32  root-123  阅读(92)  评论(0编辑  收藏  举报