zoukankan      html  css  js  c++  java
  • 基于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('...')

  • 相关阅读:
    针式PKM的主要画面的功能简介
    程序员早日走向架构师的利器:针式PKM V8.01发布
    如何经营你的知识资产
    一般软件工程师怎样拥有更多的资产
    剪贴板的使用技巧
    不要给自己找不“深入学习”的理由了
    《小论无所事事》
    全国(1977年~2011年)历年参加高考人数和录取人数
    Sql Server中,文件批量重命名
    HTML斜线表头
  • 原文地址:https://www.cnblogs.com/fungitive/p/9136119.html
Copyright © 2011-2022 走看看