如何通过 Django 获取上传的文本文件?
Posted
技术标签:
【中文标题】如何通过 Django 获取上传的文本文件?【英文标题】:How can I get uploaded text file in view through Django? 【发布时间】:2017-01-19 01:58:49 【问题描述】:我现在正在制作网络应用程序。该应用程序获取具有未组织数据的文本文件并对其进行组织。我现在在 Python3 中使用 Django。
我已经在模板中制作了表单数据。
铁板> <form action="/practice/kakao_reader/" method="post"enctype="multipart/form-data">% csrf_token %
> File:
> <input type="file" name="file"/>
> <input type="submit" value="UPLOAD" />
> </form>
但我无法通过 VIEW 获取上传的文件。 我尝试过的第一个代码是
View.pydef kakao_reader(请求):
f = codecs.open(request.FILES['file'], encoding = 'utf-8')
数据 = f.read()
我得到 invalid file: InMemoryUploadedFile: 这个错误。
具体的错误是
环境:
请求方法:POST 请求 URL: http://localhost:8000/practice/kakao_reader/
Django 版本:1.10 Python 版本:3.5.2 已安装的应用程序: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'elections', 'practice'] 已安装的中间件: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware']
追溯:
文件“C:\Python35\lib\site-packages\django\core\handlers\exception.py” 在内部 39. response = get_response(request)
文件“C:\Python35\lib\site-packages\django\core\handlers\base.py”在 _get_response 187. response = self.process_exception_by_middleware(e, request)
文件“C:\Python35\lib\site-packages\django\core\handlers\base.py”在 _get_response 185. response = Wrapped_callback(request, *callback_args, **callback_kwargs)
文件 "C:\Django\mysite\practice\views.py" 在 kakao_json 43. f = codecs.open(request.FILES['file'], encoding = 'utf-8')
打开文件“C:\Python35\Lib\codecs.py” 895. file = builtins.open(文件名,模式,缓冲)
异常类型:/practice/kakao_reader/ 处的 TypeError 异常值: 无效文件:
我该如何解决?谢谢。
【问题讨论】:
【参考方案1】:request.FILES['file']
已经是一个文件处理程序,因此您不必打开它。只需使用request.FILES['file'].read()
。
【讨论】:
以上是关于如何通过 Django 获取上传的文本文件?的主要内容,如果未能解决你的问题,请参考以下文章