檔案上傳是**開發中非常常見的功能。這裡詳細講述如何在django中實現檔案的上傳功能。
前端**部分:
action=""
enctype
="multipart/form-data"
method
="post"
>
type
="file"
name
="file"
>
type
="submit"
value
="提交"
>
form
>
後端**部分:
後端的主要工作是接收檔案。然後儲存檔案。接收檔案的方式跟接收post的方式是一樣的,只不過是通過files來實現。示例**如下:
# 檔案上傳(form表單的形式)
)
html**部分:
type
="file"
name
="file"
id="btn"
>
js**部分:
因為csrf的問題,所以引用了xfzajax
""
>
<
/script>
"">
<
/script>
var btn =$(
'#btn');
btn.
change
(function()
}})}
);<
/script>
後端部分**:
後端**和form表單的**一致,只不過返回值需要和符合規範
def
upload_file
(request)
:if request.method ==
'get'
:return render(request,
'cms/test.html'
)else
:file
= request.files.get(
'file'
)print
(file
)with
open
('1111'
,'wb'
)as fp:
for i in
file
.chunks():
fp.write(i)
return restful.ok(
)
如果想要想上傳的檔案歸納到一起,就需要指定media_root和media_url
media_root = os.path.join(base_dir,
'media'
)media_url = '/media/
然後我們可以在urls.py中新增media_root目錄下的訪問路徑。示例**如下:
from django.conf.urls.static import static
from django.conf import settings
urlpatterns =
[ path(
'', views.index),]
+ static(settings.media_url,document_root=settings.media_root)
最後在檢視函式中修改一下檔案路徑,示例**如下:
from django.conf import settings
import os
defupload_file
(request)
:if request.method ==
'get'
:return render(request,
'cms/test.html'
)else
:file
= request.files.get(
'file'
)print
(file
)with
open
(os.path.join(settings.media_root,
file
.name)
,'wb'
)as fp:
for i in
file
.chunks():
fp.write(i)
return restful.ok(
)
django 檔案上傳
檔案上傳 當django處理上傳乙個檔案的時候,檔案資料被放在request.files中。這個文件解釋檔案怎麼樣被儲存在磁碟上或者記憶體中,怎樣定製預設的行為。基本檔案上傳 考慮乙個包含filefield的簡單的表單 from django import forms class uploadfil...
django 檔案上傳
檔案上傳 當django處理上傳乙個檔案的時候,檔案資料被放在request.files中。這個文件解釋檔案怎麼樣被儲存在磁碟上或者記憶體中,怎樣定製預設的行為。基本檔案上傳 考慮乙個包含filefield的簡單的表單 from django import forms class uploadfil...
Django檔案上傳
lang en charset utf 8 titletitle head action home method post enctype multipart form data type file name file type submit value 提交 p form div body htm...