自定義檔案的上傳
如同我的上一篇部落格,在這裡上傳檔案的思路和上傳照片的思路是大致一樣的,只需要改變幾個地方。
在這裡涉及到一個問題就是伺服器檔案的名字是唯一的,我們可以用的uuid來大體實現一個唯一的檔名
def createFileName(): fileName = str(uuid.uuid4()) return fileName
def doimgUpload(request):
# 獲得檔案 uploadFile = request.FILES.get("img") # 檔案的寫入操作 # 伺服器檔案的名字通常唯一的 # 設定檔名及上傳路徑 filePath = os.path.join(settings.MEDIA_ROOT,createFileName()+".jpg" ) # 以寫的方式開啟檔案 with open(filePath,mode="wb") as wf: # 將檔案分成很多份寫入 for i in uploadFile.chunks(): wf.write(i) wf.flush()
return HttpResponse("上傳成功")
然後我們獲取這個檔案
def getImg(request): # 獲取頭像 user = User.objects.filter(u_name="陳哲西").first() # user = User() # print("------------") # print(user.u_img) #資料中的相對路徑 # print(user.u_img.path) #絕對路徑 # print(user.u_img.url) #相對路徑
imgPath = "/static/upload/" + user.u_img.url print(imgPath) data = { "imgPath":imgPath } return render(request,"getImg.html",context=data)
前端檢視即可
{{ imgPath}}