34"UTF-8">5upload678{#上传文件的form表单必须要加上enctype="multipart/form-data"#}9"/upload/"method="post"enctype="multipart/form-data">10"file"name="upload_files">11"submit"value="提交">121314uploadFiles.html1fr" />

用python写一个简单的文件上传

系统 1613 0

  用Pycharm创建一个django项目。目录如下:

用python写一个简单的文件上传_第1张图片

              
                 1
              
              
                 2
              
               "
              
                en
              
              
                "
              
              >

              
                 3
              
              
                 4
              
              
              "
              
                UTF-8
              
              
                "
              
              >

              
                 5
              
              
                upload
              
              
                 6
              
              
                 7
              
              
                 8
              
               {
              
                #
              
              
                 上传文件的form表单必须要加上enctype="multipart/form-data" #}
              
              
                 9
              
              
" /upload/ " method= " post " enctype= " multipart/form-data " > 10 " file " name= " upload_files " > 11 " submit " value= " 提交 " > 12
13 14
uploadFiles.html
              
                 1
              
              
                from
              
               django.shortcuts 
              
                import
              
              
                 render,HttpResponse

              
              
                 2
              
              
                 3
              
              
                #
              
              
                 Create your views here.
              
              
                 4
              
              
                 5
              
              
                #
              
              
                 CBV方式(class base views)
              
              
                 6
              
              
                from
              
               django.views 
              
                import
              
              
                 View

              
              
                 7
              
              
                class
              
              
                 Upload(View):

              
              
                 8
              
              
                def
              
              
                 post(self,request):

              
              
                 9
              
              
                '''
              
              
                10
              
              
                        保存上传文件前,数据需要存放在某个位置。默认当上传文件小于2.5M时,django会将上传文件的全部内容读进内存。从内存读取一次,写磁盘一次。

              
              
                11
              
              
                        但当上传文件很大时,django会把上传文件写到临时文件中,然后存放到系统临时文件夹中。

              
              
                12
              
              
                        :param request:

              
              
                13
              
              
                        :return:

              
              
                14
              
              
                '''
              
              
                15
              
              
                #
              
              
                 从请求的FILES中获取上传文件的文件名,file为页面上type=files类型input的name属性值
              
              
                16
              
                       filename = request.FILES[
              
                '
              
              
                upload_files
              
              
                '
              
              
                ].name

              
              
                17
              
              
                #
              
              
                 在项目目录下新建一个文件
              
              
                18
              
                       with open(filename,
              
                '
              
              
                wb
              
              
                '
              
              
                ) as f:

              
              
                19
              
              
                #
              
              
                 从上传的文件对象中一点一点读
              
              
                20
              
              
                for
              
               chunk 
              
                in
              
               request.FILES[
              
                '
              
              
                upload_files
              
              
                '
              
              
                ].chunks():

              
              
                21
              
              
                #
              
              
                 写入本地文件
              
              
                22
              
              
                                f.write(chunk)

              
              
                23
              
              
                return
              
               HttpResponse(
              
                '
              
              
                上传ok
              
              
                '
              
              
                )

              
              
                24
              
              
                25
              
              
                def
              
              
                 get(self,request):

              
              
                26
              
              
                return
              
               render(request, 
              
                '
              
              
                uploadFiles.html
              
              
                '
              
              )
            
views.py
              
                 1
              
              
                """
              
              
                day67 URL Configuration

              
              
                 2
              
              
                 3
              
              
                The `urlpatterns` list routes URLs to views. For more information please see:

              
              
                 4
              
              
                    https://docs.djangoproject.com/en/2.2/topics/http/urls/

              
              
                 5
              
              
                Examples:

              
              
                 6
              
              
                Function views

              
              
                 7
              
              
                    1. Add an import:  from my_app import views

              
              
                 8
              
              
                    2. Add a URL to urlpatterns:  path('', views.home, name='home')

              
              
                 9
              
              
                Class-based views

              
              
                10
              
              
                    1. Add an import:  from other_app.views import Home

              
              
                11
              
              
                    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')

              
              
                12
              
              
                Including another URLconf

              
              
                13
              
              
                    1. Import the include() function: from django.urls import include, path

              
              
                14
              
              
                    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))

              
              
                15
              
              
                """
              
              
                16
              
              
                from
              
               django.contrib 
              
                import
              
              
                 admin

              
              
                17
              
              
                from
              
               django.urls 
              
                import
              
              
                 path

              
              
                18
              
              
                from
              
               app01 
              
                import
              
              
                 views

              
              
                19
              
              
                20
              
               urlpatterns =
              
                 [

              
              
                21
              
                   path(
              
                '
              
              
                upload/
              
              
                '
              
              
                ,views.Upload.as_view() ),

              
              
                22
              
               ]
            
urls.py

  注意settings.py中的这一行要注释掉

            
              '
            
            
              django.middleware.csrf.CsrfViewMiddleware
            
            
              '
            
            ,
          

  点击运行,文件会上传到项目的根目录下面。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论