zoukankan      html  css  js  c++  java
  • Django 文件上传

    1、正常方式

    # 前端
    <form action='/upload.html' method='post' enctype='multipart/form-data'>
    {% csrf_token %}
    <input type='text' name='user'>
    <input type='file' name='img'>
    <input type='submit' value='提交'>
    </form>


    # 修改file的样式 用其它组件放在他上面,并将file透明度设置为0
    <div style='position: relative'>  # 将div中的内容设置为可绝对定位
    <img src='xxx'>
    <input type='file' name='img' style='opacity:0; position:sbsolute; top:0; left:0;'>
    # 通过样式将img与file再设置为大小相同即可
    </div>
    # views.py

    def upload(request):
      if request.method == 'GET':
        return render(request, 'upload.html')
      elif request.method == 'POST':
        user = request.POST.get('user')
        img = request.FILES.get('img')  # img是一个对象,里面封装了文件名、大小、内容。。。
        print(img.name)
        pinrt(img.size)
        f = open(img.name, 'wb')
        for line in img.chunks():
          f.write(line)
        f.close()
        return HttpResponse('...')

     2、使用Django Form组件

    # 前端
    <form action='/upload.html' method='post' enctype='multipart/form-data'>
    {% csrf_token %}
    <input type='text' name='user'>
    <input type='file' name='img'>
    <input type='submit' value='提交'>
    </form>
    
    
    # 修改file的样式 用其它组件放在他上面,并将file透明度设置为0
    <div style='position: relative'>  # 将div中的内容设置为可绝对定位
    <img src='xxx'>
    <input type='file' name='img' style='opacity:0; position:sbsolute; top:0; left:0;'>
    # 通过样式将img与file再设置为大小相同即可
    </div>
    # views.py
    from django import forms
    from django.forms import fields

    class UploadForm(forms.Form):
      user = fields.CharField()
      img = fields.FileField()
    def upload(request):   if request.method == 'GET':     return render(request, 'upload.html')   elif request.method == 'POST':
        obj = UploadForm(request.POST,request.FILES)
       if obj.is_valid():
          user = obj.cleaned_data['user']
          img = obj.cleaned_data['img']
        user
    = request.POST.get('user')     img = request.FILES.get('img')  # img是一个对象,里面封装了文件名、大小、内容。。。     print(img.name)     pinrt(img.size)     f = open(img.name, 'wb')     for line in img.chunks():       f.write(line)     f.close()     return HttpResponse('...')
  • 相关阅读:
    C#基础(WinForm窗体的单例模式,避免窗体被实例化多次)
    NPOI基础入门(旧版本)
    SQLite数据插入异常
    EClipse开发NDK流程
    git 常用命令
    6.0权限的简单实用
    MVVM模式
    去掉所有字符里面的空格换行符等
    高逼格的实现WiFi共享,不安装第三方wifi共享软件,两种方式实现开启wifi的功能
    常用的正则表达表达式以及简单用法
  • 原文地址:https://www.cnblogs.com/dangrui0725/p/9675443.html
Copyright © 2011-2022 走看看