文件上傳的幾種方法

 
 
1、 enctype="multipart/form-data"
<!DOCTYPE html>
<html>
<head>
    <title>test</title>
</head>
<body>
<form action="/test/" method="post" enctype="multipart/form-data"> <!--若是不加這個的話,提交的數據會以鍵值對提交-->
    {% csrf_token %}
    文件:<input type="file" name='test'><br>
    <input type="submit" value="提交">
</form>
</body>
</html>
def test(request):
    if request.method == 'POST':
        file = request.FILES.get('test')
        with open(file.name, 'wb') as f:
            for line in file:
                f.write(line)
    return render(request, 'test.html')
 
2、 .chunks()
def upload(request):
    """
    保存上傳文件前,數據須要存放在某個位置。默認當上傳文件小於2.5M時,django會將上傳文件的所有內容讀進內存。從內存讀取一次,寫磁盤一次。
    但當上傳文件很大時,django會把上傳文件寫到臨時文件中,而後存放到系統臨時文件夾中。
    :param request:
    :return:
    """
    if request.method == "POST":
        # 從請求的FILES中獲取上傳文件的文件名,file爲頁面上type=files類型input的name屬性值
        filename = request.FILES["file"].name
        # 在項目目錄下新建一個文件
        with open(filename, "wb") as f:
            # 從上傳的文件對象中一點一點讀
            for chunk in request.FILES["file"].chunks():
                # 寫入本地文件
                f.write(chunk)
        return HttpResponse("上傳OK")
<!DOCTYPE html>
<html>
<head>
    <title>test</title>
</head>
<body>
<form action="/test/" method="post">
    {% csrf_token %}
    文件:<input type="file" name='test'>
    <input type="submit" value="提交">
</form>
</body>
</html>
相關文章
相關標籤/搜索