zoukankan      html  css  js  c++  java
  • Django 文件导入实现方案

    Django文件导入实现方案

    by:授客 QQ1033553122

     

    开发环境

     

    Win 10

     

    Python 3.5.4

     

    Django-2.0.13.tar.gz

    官方下载地址:

    https://www.djangoproject.com/download/2.0.13/tarball/

     

    vue 2.5.2

     

    djangorestframework-3.9.4

    下载地址:

    https://github.com/encode/django-rest-framework

     

    实现思路

    1、 上传文件

    2、 获取上传的文件,本地打开文件,解析数据,处理

     

     

    view核心代码

     

    def post(self, request, format=None): 
        result = {} 
        try: 
            request.upload_handlers = [TemporaryFileUploadHandler()] 
      
            files = request.FILES 
            file = files.get('file') 
      
            if not file: 
                result['msg'] =  '上传失败,未获取到文件' 
                result['success'] =  False 
                return Response(result, status.HTTP_400_BAD_REQUEST) 
      
      
            temp_file_path = file.temporary_file_path() 
      
            temp_result = {'msg':'导入成功', 'success':True, 'status_code':status.HTTP_200_OK} 
      
            return Response(result, status_code) 
        except Exception as e: 
            result['msg'] =  '%s' % e 
            result['success'] =  False 
            return Response(result, status.HTTP_500_INTERNAL_SERVER_ERROR) 
    

     

      

     

     

     

    说明:

    1、关于更多文件上传相关资料,参考文档“Django实现文件上传下载API.docx”

    2、TemporaryUploadedFile和InMemoryUploadedFile都是UploadedFile的子类,除了拥有父类的方法之外,TemporaryUploadedFile还拥有以下方法:

    TemporaryUploadedFile.temporary_file_path(),该函数返回被上传文件的全路径,可以通过该方法获取上传的文件。

     

    InMemoryUploadedFile,则表示上传后被加载到内存的文件

     

    内置上传处理器

    MemoryFileUploadHandler和TemporaryFileUploadHandler类为django提供了默认的上传处理行为:被上传的小文件加载到内存,大文件保存到磁盘。两者位于django.core.files.uploadhandler

     

    如上,可以在运行中更改上传处理器:可以通过修改request.upload_handlers,为每个请求重新定义上传处理器。如果想要完全替换上传处理器,你可以为upload_handlers赋值一个新的列表:

    request.upload_handlers = [TemporaryFileUploadHandler()]

     

    以此类推,如果只是想增加一个处理器,并且最优先执行该处理器,我们可以利用list的insert方法,把处理器插入列表中即可,形如request.upload_handlers.insert(index, YourUploadHandler(request))

    注意:只可以在访问request.POST或者request.FILES之前修改上传处理器,否则可能报错。

    参考链接

    https://docs.djangoproject.com/zh-hans/2.0/ref/files/uploads/

     

     

  • 相关阅读:
    习题8-2 在数组中查找指定元素 (15分)
    习题8-1 拆分实数的整数与小数部分 (15分)
    练习8-8 移动字母 (10分)
    练习8-2 计算两数的和与差 (10分)
    习题6-6 使用函数输出一个整数的逆序数 (20分)
    狼人杀心得
    PHP配置文件详解
    15个实用的PHP正则表达式
    浅谈 PHP 中的多种加密技术及代码示例
    每个程序员都应该知道的 16个最佳 PHP 库
  • 原文地址:https://www.cnblogs.com/shouke/p/13961346.html
Copyright © 2011-2022 走看看