使用Django将上传的文件读入字符串
我想把上传的文件读成字符串。如果文件大小大于100k,则不允许使用该文件 我有下面的代码,但是当我使用pdb单步执行它时,在data=file.read()行执行之后,数据是空的使用Django将上传的文件读入字符串,django,Django,我想把上传的文件读成字符串。如果文件大小大于100k,则不允许使用该文件 我有下面的代码,但是当我使用pdb单步执行它时,在data=file.read()行执行之后,数据是空的 def import_data(request): params = {} if request.method == 'POST': pdb.set_trace() form = UploadFileForm(request.POST, request.FILES)
def import_data(request):
params = {}
if request.method == 'POST':
pdb.set_trace()
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
file = request.FILES['file']
data = file.read()
update_database(data)
else:
form = UploadFileForm()
params['form'] = form
return render_to_response('import_data.html',
params,
context_instance=RequestContext(request))
这是我的模板:
% extends 'base.html' %}
{% block content %}
<form enctype="multipart/form-data" action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
{% endblock %}
%extends'base.html%}
{%block content%}
{%csrf_令牌%}
{{form.as_p}}
{%endblock%}
有什么办法可以解决这个问题吗?这个问题最常见的原因不是将属性
enctype=“multipart/form data”
添加到HTML中的表单标记中:
<form method="post" enctype="multipart/form-data">
</form>
您是否查看了“”您的上载内容。这基本上就是把你的上传分成多个“块”,然后保存到磁盘上。我认为这将帮助你上传更大的文件
关于执行“data=file.read()”后的空文件,我认为可以执行类似file.seek(0)的操作,将文件指针移回文件的开头。我猜第一次读取文件时,会将文件指针留在文件的末尾,因此看起来是空的
希望这有帮助,
乔即使在使用
<form method="post" enctype="multipart/form-data"></form>
你能把你的全部视图放进去吗?我已经用我的模板更新了这个问题,其中已经包括了这个。
from django.core.files.storage import default_storage
my_file=request.FILES['attachment_1']
BASE_DIR =
os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
media_path = os.path.join(BASE_DIR,'media')
full_path=os.path.join(media_path,my_file.name)
#print(full_path)
f = default_storage.open(full_path, 'r')
data = f.read()
f.close()
print(data)