Django进阶-文件上传

这篇具有很好参考价值的文章主要介绍了Django进阶-文件上传。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、普通文件上传

定义

        用户可以通过浏览器将图片等文件上传到网站

场景

        用户上传头像

        上传流动性的文档【pdf,txt】等

上传规范-后端

1.视图函数中,用request.FILES取文件框的内容

file = request.FILES['xxx']

说明:

        1.FILES的key对应页面中file框的name值

        2.file绑定文件流对象

        3.file.name文件名

        4.file.file文件的字节流数据

2.配置文件的访问路径和存储路径

在setting.py中配置MEDIA相关的配置(将用户上传的文件统称为media资源)

#setting.py

MEDIA_URL = '/media'

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

 MEDIA_URL和MEDIA_ROOT需要手动绑定

在主路由中添加

from django.conf import settings

from django.conf.urls.static import static

urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

 3.文件写入方案

1.传统的open方式(python方式)

存在文件重名问题

import os
from django.conf import settings
class TestUpload(APIView):

    def post(self,request):
        print('################')
        file = request.FILES['myfile']
        print(file.name)
        filename = os.path.join(settings.MEDIA_ROOT,file.name)
        print(filename)
        with open(filename,'wb') as f:
            data=file.file.read()
            f.write(data)
        return Response("接受文件:"+file.name+"成功")

2.借助ORM,即将图片地址存入MySQL

字段:FileField(upload="子目录名")

在model.py中    字段设置FileField

class TbPicture(models.Model):
    title = models.CharField(max_length=100)
    image = models.FileField(upload_to='picture')

    class Meta:
        db_table = "tb_picture"
from myapp.models import TbPicture
class TestUpload(APIView):
    def post(self,request):
        title1 = request.query_params['title']
        myfile = request.FILES['myfile']
        TbPicture.objects.create(title=title1,image=myfile)
        return Response("接受文件:"+myfile.name+"成功")

 浏览器浏览

屏幕截图_2023-05-24_141828.png (750×485)

二、minio安装配置

1.下载minio

MinIO | Code and downloads to create high performance object storage

2.创建相关文件(不创建也行)

1.手动创建minio应用程序目录,如:D:\minio\bin

2.手动创建minio数据目录,如:D:\minio\data

3.手动创建minio日志目录,如:D:\minio\logs

3.启动minio服务

  • 打开cmd  进入下载的exe文件所在的墓库

setx MINIO_ROOT_USER xxxx

  • 设置账号密码(不设置  默认是minioadmin)

setx MINIO_ROOT_PASSWORD mypassword

  • 启动minio服务  (9000是后台登录页面,9001是webapi接口端口,用于服务调用)

D:\minio\bin\minio.exe server D:\minio\data --console-address ":9000" --address ":9001" > D:\minio\logs\minio.log

4.访问控制台

IP+9000 文章来源地址https://www.toymoban.com/news/detail-652668.html

三、将文件上传minio

到了这里,关于Django进阶-文件上传的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用django的APP在前端上传excel通过post传给后端读取并打印

    备研了,博客许久未更了,但是学期末的大作业,遇到了问题并成功解决了,不得不记录一下。 传数据表单必不可少 input用于文件类的上传,相当于先让前端收到这份文件 button用于表单的发送(submit 提交很好理解) 表单中的 action=“/insurance/upload_result” 表明我们要将文件数

    2024年02月10日
    浏览(76)
  • Django静态文件&媒体文件&文件上传

    创建一个新项目 Day06DjangoPro01 每一个应用中都可以新建一个static和templates 如果想要额外再加一些静态文件路径,就再加一个STATICFILES_DIRS Apptemplatesindex.html 一般用 link rel=\\\"stylesheet\\\" href=\\\"{% static \\\'css/index.css\\\' %}\\\" Appstaticcssindex.css 根路由 Day06DjangoPro01urls.py Appviews.py 在项目根目录

    2024年02月10日
    浏览(108)
  • Django 文件上传(十二)

    当 Django 处理文件上传时,文件数据最终会被放置在 request.FILES 。 查看文档:文件上传 | Django 文档 | Django Django工程如下:    创建本地存储目录 在static/应用目录下创建uploads目录用于存储接收上传的文件  在settings.py 配置静态目录和上传目录   1、models.py模型数据 注意:迁

    2024年02月04日
    浏览(83)
  • Django高级扩展之文件上传

    文件上传是一个比较常用的网站功能,在服务器端,Django会使用一个叫作request.FILES的对象来处理上传的文件。 目录 存储路径 创建存储目录 配置settings.py 上传单文件 配置url 上传文件模板 视图方法 显示上传页面 上传文件处理 上传效果 1.选好上传文件 2.点击提交 3.查看上传

    2024年02月09日
    浏览(54)
  • Django自定义storage上传文件到Minio

    首先新建一个MyStorage.py,自定义Storage类 这么实现 def url(self, name)这个函数,需要在Minio后台将 bucket 权限设置为public,就是开放的所有人皆可访问   Minio实现上传文件,新建minioClient.py   新建一个tools.py   我的models.py   新建一个视图文件     在settings.py中加上     整个项目

    2024年02月06日
    浏览(48)
  • 【Python】【进阶篇】1、Django是什么?

    Django 是使用 Python 语言开发的一款免费而且开源的 Web 应用框架。由于 Python 语言的跨平台性,所以 Django 同样支持 Windows、Linux 和 Mac 系统。 在 Python 语言炽手可热的当下,Django 也迅速的崛起,在 Web 开发领域占有一席之地。基于 Python 开发的框架除了 Django 外,还有可以实现

    2023年04月23日
    浏览(47)
  • Python进阶篇(一)-- Django快速上手

            Web框架,就是用于开发Web服务器端应用的基础设施,说得通俗一点就是一系列封装好的模块和工具。事实上,即便没有Web框架,我们仍然可以通过socket或CGI来开发Web服务器端应用,但是这样做的成本和代价在商业项目中通常是不能接受的。通过Web框架,我们可以化

    2024年02月01日
    浏览(64)
  • Django_自定义文件存储类并将图片上传到FastDFS

    目录 将图片到FastDFS和浏览的流程图 使用自定义文件存储类 1、定义存储类 2、创建FastDFS的配置文件 3、修改settings.py配置 4、上传图片进行验证 4.1 定义一个包含ImageField字段的模型类 4.2 登录django的admin后台 4.3 上传图片 4.4 查看图片 源码等资料获取方法 先部署好FastDFS,这个以

    2024年02月15日
    浏览(108)
  • 【Python】【进阶篇】30、Django模板继承精讲

    在本节我们讲述模板语言中最后一个知识点,也是最重要的,那就是模板继承。模板继承和 Python 语言中类的继承含义是一样的,在 Django 中模板只是一个文本文件,如 HTML,XML,CSV等文件格式。那模板继承到底是是什么呢?如何在 Django 中使用它呢?让我们一起一探究竟。 模

    2024年02月04日
    浏览(48)
  • 【Python】【进阶篇】24、Django if标签详解

    本节继续讲解 Django 的模板语言,Django 内置了许多标签用于简化模板的开发过程,同时 Django 也支持自定义标签,这极大的方便了 Web开发者,下面我们依次进行介绍。 Django 的模板系统对标签的解释是在渲染的过程中提供相应的逻辑,比如Python 语言中 if…else 语句、with 语句、

    2024年02月03日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包