Django上傳文本文件

前置條件:
1.創建了名爲mydjango的project
2.創建了名爲learn的app
3.learn中創建了模板文件夾templates
項目結構圖如下:
這裏寫圖片描述

具體流程如下:
1.在應用learn中新建forms.py,編寫文件上傳form對象:

from django import forms

class UploadFileForm(forms.Form):
    title = forms.CharField(max_length=50)
    file = forms.FileField()

2.建立package工具包,定義一個文件處理工具模塊FileTools.py,遍歷UploadedFile.chunks(),而不是使用read(),能確保大文件並不會佔用系統過多的內存:

def handle_upload_file(file):

    with open('name.txt', 'wb+') as destination:
        for chunk in file.chunks():
            destination.write(chunk)

3.views.py中定義處理文件上傳的controller方法:

from django.http import HttpResponse
from django.http import HttpResponseRedirect
from .forms import UploadFileForm
from learn.tools.FileTools import handle_upload_file

'''
上傳文件處理
'''
def upload_file(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)

        if form.is_valid():
            handle_upload_file(request.FILES.get('file', None))
            ftemp = request.FILES.get('file', None)
            print('ftemp: ', ftemp)
            return HttpResponseRedirect('/success/')
    else:
        form = UploadFileForm()

    return render(request, 'upload.html', {'form':form})

'''
上傳成功跳轉處理
'''
def uploadFileResult(request):

    result = u'成功......'
    return render(request, 'success.html', {'result':result})

4.templates中添加模板文件success.html和upload.html:
success.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上傳結果</title>
</head>
<body>
    文件上傳成功
</body>
</html>

upload.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上傳</title>
</head>
<body>
    <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form }}
        <input type="submit" value="提交"/>
    </form>
</body>
</html>

5.添加請求url,修改mydjango下的urls.py:

urlpatterns = [
    url(r'^$', learn_views.index, name='home'),
    url(r'^success/$', learn_views.uploadFileResult, name='success'),
    url(r'^uploadFile/$', learn_views.upload_file, name='upload'),
    #url(r'^$', learn_views.index),
    #url(r'^$', learn_views.home, name='home'),
    #url(r'^form/$', learn_views.form, name='form'),
    #url(r'^add/$', learn_views.add, name='add'),
    #url(r'^add_a_b/(\d+)/(\d+)/$', learn_views.add2, name='add2'),
    #url(r'^hello/$', learn_views.hello),
    url(r'^admin/', admin.site.urls),
]

6.啓動運行,瀏覽器中輸入http://127.0.0.1:8000/uploadFile/
這裏寫圖片描述
選擇文件上傳,結果爲:
這裏寫圖片描述
7.在mydjango下,可以看到name.txt文件,文件內容爲上傳的文件內容:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章