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>

效果如圖(太丑了):

編寫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映射訪問地址:

訪問地址上傳圖片,抓包如圖:

上傳成功:

數據庫存儲的字段:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM