1.文件上传得 主要就是弄个表单吧上传你得东西从前端往后端抛
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>静态文件</title>
{% load static %}
{# <link rel="stylesheet" href="/static/index.css">#}
<link rel="stylesheet" href="{% static 'index.css' %}">
</head>
<body>
<h1>文件上传</h1>
<a href="{% url 'app1:show' %}">前往上传图片列表</a>
<hr>
<form action="#" method="post" enctype="multipart/form-data">
{% csrf_token %}
<p>用户名:<input type="text" name="uname"> </p>
<p>头像:<input type="file" name="icon"></p>
<p><button>上传图片</button></p>
</form>
</body>
</html>
2.view.py写上传你文件得处理方案import os
import uuid
from django.http import HttpResponse
from django.shortcuts import render
from django.conf import settings
from app1.models import *
# Create your views here.
def test(request):
return HttpResponse("app1测试")
# 静态文件使用
def index(request):
return render(request, 'index1.html')
def upload(request):
if request.method == 'GET':
return render(request, 'index1.html')
elif request.method == 'POST':
# 实现单文件上传
uname = request.POST.get('uname')
icon = request.FILES.get('icon') # 单个文件
# print(uname, icon) # 打 1.png
# 1.将传得图片存到服务器媒体文件夹中配置seting
# 2.将该媒体文件得路径存入到数据库汇总
# 保存文件到MEDIA_ROOT指定的目录
filename = get_uuid_name() + icon.name[icon.name.rfind('.'):] # 不要使用原图名称
filePath = os.path.join(settings.MEDIA_ROOT, filename)
print(filePath)
# 分段写入文件
with open(filePath, 'ab') as fp:
for part in icon.chunks(): # 分段去内容
fp.write(part) # 写入内容
fp.flush() # 清空缓存
# 讲媒体文件上传人的名字存进数据库
print(uname)
user = userIcon()
user.name = uname
user.icon = 'uploads/' + filename
user.save()
return render(request, 'index1.html')
# 通过uuid来得到位移得图片名称
def get_uuid_name():
return str(uuid.uuid4().hex)
def show(request):
user = userIcon.objects.get(name='谢凡')
return render(request, 'show.html', {'user': user})
简单来说就是拿到文件,然后吧弄UUID技术生成一个唯一得图片名字再拼一个路径出来,然后往服务器里面写入存储
然后吧uuid得名字存到数据库方面后期调用显示
3.数据库mode.py文件设计from django.db import models
# Create your models here.
class userIcon(models.Model):
# 名字
name = models.CharField(max_length=30, unique=True)
# 头像
icon = models.CharField(max_length=255)
class Meta:
db_table = 'tb_iCON'
4.上传图片展示html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户头像</title>
{% load static %}
</head>
<body>
<h1>用户头像</h1>
<hr>
<p> 用户名字:{{ user.name }}</p>
<a href="{% url 'app1:index' %}">返回首页</a>
<hr>
<img src="{% static user.icon %}" width="200">
</body>
</html>
over
|