如同我的上一篇博客,在这里上传文件的思路和上传照片的思路是大致一样的,只需要改变几个地方。
在这里涉及到一个问题就是服务器文件的名字是唯一的,我们可以用的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}}