如何通过 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.py

def 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 获取上传的文本文件?的主要内容,如果未能解决你的问题,请参考以下文章

labview如何读取文本文档中某一行的字符串

C语言如何判断文本文档的结束

java中如何实现删除文本文档里面的指定字符

纯文本文档如何转换成excel工作表

上传的文本总出现乱码

控制台应用程序 - FTP 上传停止执行