Django實現文件在本地的存儲和讀取


需求介紹:將圖片存入本地的電腦文件夾中,將圖片的路徑保存到數據庫,然后通過數據庫的路徑讀取文件;

1、文件的存入:

前端文件:

<form class="form-horizontal" method="post" action="/commodityAdd/" enctype="multipart/form-data">   # enctype="multipart/form-data"  必須參數
    <div class="form-group">
        <label for="inputImage" class="col-sm-2 control-label">標志圖片</label>
        <div class="col-sm-10">
            <input type="file" name="commodityImage" id="inputImage">
        </div>
    </div>
    <div class="form-group">    
        <button type="submit" class="btn btn-danger">提 交</button>
    </div>
</form>

視圖函數:

def storage_view(request):
    """
    存儲數據
    :param request:
    :return:
    """
    if request.method == "POST":
        img = request.FILES.get("img")
        url = "/img/"
        old_name = img.name
        suffix = old_name.rsplit(".")[1]
        img_name = int(time.time())
        dir = os.path.join(os.path.join(settings.BASE_DIR, 'img'),str(img_name)+'.'+suffix)
        destination = open(dir,'wb+')
        for chunk in img.chunks():
            destination.write(chunk)
        destination.close()
        models.datainfo.objects.create(
            data_photo = url + str(img_name)+'.'+suffix,
            add_time = timezone.now()
        )
        return JsonResponse({"status":True})
    else:
        return JsonResponse({"status":False,"error":"請求錯誤"})

上邊是將前端發送過來的圖片保存到本地指定文件夾,然后將文件夾和文件名作為相對路徑存入數據庫,方便訪問時快速的獲取;

2、文件的獲取:

首先,要在settings.py中設置,media是保存圖片的文件夾:

IMG_PATH = "/img/"
MEDIA_ROOT = os.path.join(BASE_DIR,'img')

url.py中:

from django.conf.urls.static import static
from . import settings
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^api/', include('web.urls')),
]
urlpatterns += static('/img/', document_root=settings.MEDIA_ROOT)

要加載的圖片,放到img文件夾中,在html文件中:

<img src="/img/7.jpg" alt="圖片無法顯示"/>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM