zoukankan      html  css  js  c++  java
  • Django处理文件上传File Uploads

    • HttpRequest.FILES

      表单上传的文件对象存储在类字典对象request.FILES中。

      file_obj = request.FILES.get('file', None)
      print(file_obj.name)
      print(file_obj.size)

    • UploadedFile

      UploadedFile是类文件对象,具有以下方法和属性:

       1. UploadedFile.read()

        读取整个上传文件的数据,文件较大时慎用。

       2. UploadedFile.multiple_chunks(chunk_size=None)

        判断文件是否足够大,一般为2.5M

       3. UploadedFile.chunks(chunk_size=None)

        返回一个生成器对象,当multiple_chunks()为True时应该使用这个方法来代替read().

       4. UploadedFile.name

        上传文件的name。

       5. UploadedFile.size

        上传文件的大小。

       6. UploadedFile.content_type

        上传文件时的content_type报头,例如(e.g. text/plain or application/pdf). 

       7. UpladedFile.charset

        编码

    上传方式一:

     表单上传:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form action="/upload_file/" method="post" enctype="multipart/form-data">  #  注意 enctype="multipart/form-data"
        <input type="file" name="file"> <input type="submit" value="上传"> </form>

    </body>

    </html>

    后台:

    def file_upload(request):
        if request.method == 'GET':
            return render(request, 'file_upload.html')
        elif request.method == 'POST':
            file_obj = request.FILES.get('file', None)
            print(file_obj.name)
            print(file_obj.size)
            with open('static/images/' + file_obj.name, 'wb') as f:
                for line in file_obj.chunks():
                    f.write(line)
            f.close()
            return HttpResponse('OK')

    上传方式二:

    form 类上传:

    from类:

    class FileForm(forms.Form):
        file = fields.FileField()

    前段:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form action="/upload_file/" method="post" enctype="multipart/form-data">
           {{ obj.file }}
            <input type="submit" value="上传">
        </form>
    
    </body>
    </html>

    后台:

    def file_upload(request):
        if request.method == 'GET':
            obj = FileForm()
            return render(request, 'file_upload.html', {'obj': obj})
        elif request.method == 'POST':
            obj = FileForm(request.POST, request.FILES)  # 必须填 request.POST
            if obj.is_valid():
                print(obj.cleaned_data)  # {'file': <InMemoryUploadedFile: image007.jpg (image/jpeg)>}
                with open('static/images/' + obj.cleaned_data['file'].name, 'wb') as f:
                    for line in obj.cleaned_data['file'].chunks():
                        f.write(line)
                f.close()
            else:
                print(obj.errors)
            return HttpResponse('OK')
    

    上传方式三:

    ajax上传:

    待续... 

  • 相关阅读:
    php 计算时间添加
    微信网页授权
    微信抢红包微信 PHP代码实现
    微信中禁止长按复制的代码
    【转】java内存分配和String类型的深度解析
    【转】java中创建对象的方法
    【转】深入理解Java的接口和抽象类
    【转】Java 字节流与字符流的区别
    【转】Java并发编程:Thread类的使用
    【转】深入理解java异常处理机制
  • 原文地址:https://www.cnblogs.com/liyqiang/p/8716118.html
Copyright © 2011-2022 走看看