需求介紹:將圖片存入本地的電腦文件夾中,將圖片的路徑保存到數據庫,然后通過數據庫的路徑讀取文件;
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="圖片無法顯示"/>
