• 基于form的django图片上传


    第一种,直接上传

    views

    class TestimgForm(forms.Form):
        title = fields.CharField()
        img = fields.FileField()
    def testimg(request):
        import os,time
        if request.method == 'GET':
            img = TestimgForm()
            return render(request, 'backend/testimg.html',{'img':img})
        else:
            obj = TestimgForm(request.POST, request.FILES)
    	if obj.is_valid():
    	    img = request.FILES.get('img')
                time = time.strftime('%Y%m%d%H%M%S')
                 ext = os.path.splitext(img.name)[1]
    	     file_path = os.path.join('upload/article',time+ext)
                    #将图片重命名
                 f = open(file_path,'wb')
                 for line in imgs.chunks():
                 f.write(line)
                 f.close()
    	     return HttpResponse('上传成功')

    第二种,写入数据库

    html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <title>Title</title>
    </head>
    <body>
    <form action="testimg" method="post" enctype="multipart/form-data">
        {% csrf_token %}
        {{ img }}
        <input type="submit" value="提交"/>
    </form>
    </body>
    </html>

    views

    class TestimgForm(forms.Form):
        title = fields.CharField()
        img = fields.FileField()
    def testimg(request):
        import os,time
        if request.method == 'GET':
            img = TestimgForm()
            return render(request, 'backend/testimg.html',{'img':img})
        else:
            obj = TestimgForm(request.POST, request.FILES)
    		if obj.is_valid():
    		title = obj.cleaned_data['title']
                img = obj.cleaned_data['img']
            time = time.strftime('%Y%m%d%H%M%S')
            ext = os.path.splitext(img.name)[1]
    		img.name = time + ext
                Imgtest.objects.create(title=title,img=img)
    		return HttpResponse('上传成功')

    models.py

    class Imgtest(models.Model):
        title = models.CharField(verbose_name='标题',max_length=32,)
        img = models.ImageField(verbose_name='缩略图',upload_to="./article/",
                                help_text="大小200*200,不超过200k",
                                default="/upload/article/common.jpg")

    完整代码

    class TestimgForm(forms.Form):
        title = fields.CharField()
        img = fields.FileField()
    def testimg(request):
        import os,time
        if request.method == 'GET':
            img = TestimgForm()
            return render(request, 'backend/testimg.html',{'img':img})
        else:
            obj = TestimgForm(request.POST, request.FILES)
            if obj.is_valid():
            #(request.FILES['file'])
                # title = request.FILES.get('title')
                # img = request.FILES.get('img')
                title = obj.cleaned_data['title']
                img = obj.cleaned_data['img']
                time = time.strftime('%Y%m%d%H%M%S')
                ext = os.path.splitext(img.name)[1]
                img.name = time + ext
                # Imgtest.objects.create(title=title,img=img)
                # img是对象(文件大小,文件名称,文件内容。。。)
                # file_path = os.path.join('upload/article',time+ext)
                file_path = os.path.join('upload/article', img.name)
                f = open(file_path,'wb')
                for line in img.chunks():
                    f.write(line)
                f.close()
                return HttpResponse('...')

  • 相关阅读:
    vim中实现php代码自动完成功能
    tt安装与配置
    GIT 常用命令
    Git命令行基本操作
    传统的分布式应用集成技术(网摘)
    离线安装IE 11
    Intellij IDEA破解激活
    Win7IE11 For x86&x64离线安装包
    Oracle Instant Client(即时客户端) 安装与配置
    转 [OpenCV]:Visual Studio 2012 搭建 OpenCV2.4.3
  • 原文地址:https://www.cnblogs.com/fungitive/p/9136119.html
Copyright © 2020-2023  润新知