django的mysql映射文件下载_Django实现文件上传、下载

Django实现文件上传

1. 配置setting文件

1.1. 在setting里面配置文件上传路径,在setting末尾添加

#指定上传文件的存储相对路径(读取文件)

MEDIA_URL = '/media/'

#上传文件存储路径(存储路径)

MEDIA_ROOT = os.path.join(BASE_DIR,'media')

1.2. 在项目根目录新建media文件夹

1.3. 配置TEMPLATES,添加如下内容

'django.template.context_processors.media'

添加完如下所示

TEMPLATES = [

{

'BACKEND': 'django.template.backends.django.DjangoTemplates',

'DIRS': [os.path.join(BASE_DIR, 'templates')]

,

'APP_DIRS': True,

'OPTIONS': {

'context_processors': [

'django.template.context_processors.debug',

'django.template.context_processors.request',

'django.contrib.auth.context_processors.auth',

'django.contrib.messages.context_processors.messages',

'django.template.context_processors.media'

],

},

},

]

2. 配置父路由urls

2.1. 将父路由映射到子路由的路径

urlpatterns = [

path('admin/', admin.site.urls),

path('student/', include('stu.urls'))

]

2.2. 配置通过数据加载加载图片

from django.views.static import serve

from .settings import MEDIA_ROOT, DEBUG

if DEBUG:

urlpatterns += url(r'^media/(?P.*)/$', serve, {'document_root': MEDIA_ROOT}),

3. 配置子路由urls

urlpatterns = [

url(r'^$', views.index_view),

url(r'^upload/', views.upload_view),

url(r'^showall/', views.showall_view)

]

4. 构建模型数据库类models

class Student(models.Model):

sno = models.AutoField(primary_key=True)

sname = models.CharField(max_length=30)

photo = models.ImageField(upload_to='imgs')

def __str__(self):

return u'Student:{}'.format(self.sname)

5.视图逻辑处理views

from django.http import HttpResponse

from django.shortcuts import render

# Create your views here.

from stu.models import Student

def index_view(request):

if request.method == 'GET':

return render(request, 'index.html')

else:

return HttpResponse('页面有误!')

def upload_view(request):

uname=request.POST.get('uname','')

photo=request.FILES.get('photo','')

Student.objects.create(sname=uname,photo=photo)

return HttpResponse('上传成功')

def showall_view(request):

student=Student.objects.all()

return render(request,'showall.html',{'student':student})

6.前端页面

6.1. index.html

{% csrf_token %}

姓名:

头像:

6.2. showall.html

学号姓名照片操作

{% for foo in student %}

{{ forloop.counter}}{{foo.sname}}%7B%7BMEDIA_URL%7D%7D%7B%7B%20foo.photo%20%7D%7D下载

{% endfor %}

Django文件下载

def download_view(request):

photo = request.GET.get('photo', '')

filename = photo[photo.rindex('/') + 1:]

system_path = os.getcwd()

print(photo)

path = os.path.join(system_path, photo[1:].replace('/', '\\'))

print(path)

with open(path, 'rb') as fr:

reponse = HttpResponse(fr.read())

reponse['Content-Type'] = 'image/png'

reponse['Content-Disposition'] = 'attachment;filename=' + filename

return reponse

**项目名称:** 基于Vue.js与Spring Cloud架构的博客系统设计与开发——微服务分布式应用实践 **项目概述:** 本项目为计算机科学与技术专业本科毕业设计成果,旨在设计并实现一个采用前后端分离架构的现代化博客平台。系统前端基于Vue.js框架构建,提供响应式用户界面;后端采用Spring Cloud微服务架构,通过服务拆分、注册发现、配置中心及网关路由等技术,构建高可用、易扩展的分布式应用体系。项目重点探讨微服务模式下的系统设计、服务治理、数据一致性及部署运维等关键问题,体现了分布式系统在Web应用中的实践价值。 **技术架构:** 1. **前端技术栈:** Vue.js 2.x、Vue Router、Vuex、Element UI、Axios 2. **后端技术栈:** Spring Boot 2.x、Spring Cloud (Eureka/Nacos、Feign/OpenFeign、Ribbon、Hystrix、Zuul/Gateway、Config) 3. **数据存储:** MySQL 8.0(主数据存储)、Redis(缓存与会话管理) 4. **服务通信:** RESTful API、消息队列(可选RabbitMQ/Kafka) 5. **部署与运维:** Docker容器化、Jenkins持续集成、Nginx负载均衡 **核心功能模块:** - 用户管理:注册登录、权限控制、个人中心 - 文章管理:富文本编辑、分类标签、发布审核、评论互动 - 内容展示:首页推荐、分类检索、全文搜索、热门排行 - 系统管理:后台仪表盘、用户与内容监控、日志审计 - 微服务治理:服务健康检测、动态配置更新、熔断降级策略 **设计特点:** 1. **架构解耦:** 前后端完全分离,通过API网关统一接入,支持独立开发与部署。 2. **服务拆分:** 按业务域划分为用户服务、文章服务、评论服务、文件服务等独立微服务。 3. **高可用设计:** 采用服务注册发现机制,配合负载均衡与熔断器,提升系统容错能力。 4. **可扩展性:** 模块化设计支持横向扩展,配置中心实现运行时动态调整。 **项目成果:** 完成了一个具备完整博客功能、具备微服务典型特征的分布式系统原型,通过容器化部署验证了多服务协同运行的可行性,为云原生应用开发提供了实践参考。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值