实现model中的文件上传FTP(一)

2023-11-06

由于在django的model中配置了filefield或者imagefield配置了upload_to参数只能将用户上传的文件上传到项目本地,就算重定向到项目外也只是直接读取文件系统,这样对未来的项目迁移或者资源管理都会造成很大的困扰,而且这种方式总觉得不太符合规范,所以找了一些资料将文件上传直接上传到FTP

一.django-storages

django的存储是通过一个叫做storages的类实现的,你可以看到在model的很多filed中都有storages=的参数选项,如果不设置,默认就是default_storage也就是FileSystemStorage,这个类也是继承的Storages基类

所以如果想要实现FTP存储可以自己重写一个storage,也可以去找个轮子

1.自己写,参考 https://www.cnblogs.com/linxiyue/p/7456004.html

2.找现成的轮子,我找到这个第三方的storages 可以实现ftp和sftp,当然还有一些其他的方式存储,我没有过多研究,这个里面都有 https://github.com/jschneier/django-storages

 

安装可以通过pip

pip install django-storages

或者其他的安装方式在github上都有写,可以参考一下,安装成功之后在python包路径里是叫storages,这里注意一下,否则容易import的时候找不到,我也踩过坑

二.models设置

from storages.backends.ftp import FTPStorage
#FTP
from storages.backends.sftpstorage import SFTPStorage
#SFTP
st = FTPStorage()
#使用sftp可以用SFTPStorage()
class Test(models.Model):
    test = models.ImageField(upload_to='test', storage=st)

三.setting设置

# FTP
FTP_STORAGE_LOCATION = 'ftp://user:passwd@host/path'

 

以上三步配置完后,就可以直接将model中的某个文件直接上传到FTP了,而数据库中相应的字段存储的只是一个文件路径

 

转载于:https://www.cnblogs.com/superpigeons/p/8761548.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现model中的文件上传FTP(一) 的相关文章

随机推荐

  • YoloV8改进策略:将FasterNet与YoloV8深度融合,打造更快更强的检测网络

    文章目录 数据集 官方模型的成绩 改进一 改进二 改进三 总结 数据集 本来想选COCO数据集 但是我觉得训练相同的epoch是一种不公平的对比 因为预训练本来就是COCO数据集上得来的 这样对官方的模型有利 而我改动了模型的结构 导致了没
  • 【重点突破】—— 百度地图在React单页面应用中的使用

    重点突破 百度地图在React单页面应用中的使用 前言 百度地图是网页中使用地图的常用第三方工具 这里结合React项目中学到的应用场景总结一些使用要点 一 在网页中嵌入百度地图 搜百度地图开放平台 注册百度开发者账号 控制台 查看应用 创
  • QT的使用(初期笔记)

    signal 发送的信号 signals 自定义信号 返回值是void 只需声明 不需实现 可以有参数 可以重载 按钮 1 inherited 继承 from QAbstractButton 1 clicked bool checked f
  • idea2021版本新建web项目(详细教程)

    打开idea右上角的文件 新建项目 选中java模块 下一步 取名 下一步 打开后是个空白 到这一步 右键选中untitled打开添加框架支持 选中web应用程序 一定要勾选创建web xml 然后点击确定 接下来 找到右上角的添加配置 点
  • matplotlib绘图横坐标或纵坐标文本显示不全

    import matplotlib pyplot as plt x 1 2 3 4 y 1 4 9 6 labels Frogs Hogs Bogs Slogs plt plot x y You can specify a rotation
  • unity使用Tcp/UDP协议网络通信实现(Socket简单应用)

    一 TCP协议 服务器端 1 打开vs 创建一个c 的控制台应用程序 代码如下 记得把ip换成自己电脑ip using System using System Collections Generic using System Linq us
  • INS/GNSS组合导航(七)角速度坐标系变换与欧拉角转换

    注意 角速度与角速度率有严格区别 反映在以下两点 正交的三个角速度 角速度矢量 与欧拉角速率之间的关系如下 欧拉角速率并不是纯粹的正交矢量 而是一个与旋转顺序相关而且非正交的三个矢量 积分欧拉角速率得到的是欧拉角的大小 又称卡丹角 积分角速
  • 股票预测_机器学习预测股票

    2 机器学习技术综述 集成多种人工智能系统的机器学习技术尝试通过对历史数据的学习提取数据模式 这一过程被称为训练或学习 其目的在于实现后续基于新数据的预测 Xiao Xiao Lu and Wang 2013 pp 99 100 使用机器学
  • 【Java】类和对象

    前言 面向对象编程的特性 封装 继承 多态 在Java中 最基本的封装单元是类 一个类的定义为具有相似特征对象的一种抽象 根据类的继承 父类只定义各子类所需的属性和方法 多态是类中同一名称的行为 可以有多种不同的功能 文章目录 前言 一 类
  • Mybatis Generator 配置详解

    许多人在Java项目中都会到使用Mybatis Generator这个工具包 这里把这个工具的配置完整列一下 gt
  • spss常态检验_利用SPSS检验数据是否符合正态分布

    利用SPSS检验数据是否符合正态分布 正态分布也叫常态分布 在我们后面说的很多东西都需要数据呈正态分布 下面的图就是正态分布曲线 中间隆起 对称向两边下降 下面我们来看一组数据 并检验 期初平均分 数据是否呈正态分布 此数据已在SPSS里输
  • Sentinel-持久化

    直接使用dashboard和sentinel配置各种规则时 默认是存在了内存中 如果服务器重启那么数据就会丢失 从而Sentinel提供了5中持久化的方式 将各种配置数据进行持久化 若服务器重启就重新加载持久化的数据 防止数据丢失 1 持久
  • 使用adb查看安装包的apk路径与清除安装包数据与缓存操作实例

    adb shell pm path
  • 【Stata】CGSS数据清理:Codebook速成法

    对数据使用者来说 了解一个调查数据基本情况的常见途径就是查看该数据的codebook 对数据所有者 提供方来说 制作一份详细的codebook是其数据管理工作中不可或缺的一环 2016年上半年CGSS项目组把CGSS2003年到CGSS20
  • 解决Ubuntu安装后无法联网的问题-网卡驱动为安装成功

    转载自 http blog csdn net ifmvo article details 54023628 t0 起因 屁话 最近由于公司电脑不够用 所以暂时使用自己的笔记本做开发 i5 4G win7这配置看个视频 听个音乐还好 可我是做
  • 【动手学习pytorch笔记】9.卷积神经网络基础(卷积层,填充和步长,多输入输出通道,池化层)

    卷积层 二维互相关运算 import torch from torch import nn from d2l import torch as d2l def corr2d X K 计算二维互相关运算 h w K shape Y torch
  • 【LeetCode刷题】94、二叉树的中序遍历(C++)

    94 二叉树的中序遍历 原题连接 https leetcode cn problems binary tree inorder traversal 问题描述 给定一个二叉树的根节点 root 返回 它的 中序 遍历 示例 1 输入 root
  • react——事件绑定

    react有两种写法 一种是类组件 也叫有状态组件 一种是函数式组件 也叫无状态组件 而后引入了react hooks 函数式组件也能修改状态 在这两种组件中的事件绑定的原理一样 写法不一样 这篇文章主要就是记录这两种组件中的事件绑定写法
  • 迁移学习一、基本使用

    非完全原创 但遗失了原文链接 看到可更改 迁移学习 一 迁移学习方法介绍 1 微调网络的方法 微调网络的方法实现迁移学习 更改最后一层全连接 并且微调训练网络 2 将模型看成特征提取器 将模型看成特征提取器 如果一个模型的预训练模型非常的好
  • 实现model中的文件上传FTP(一)

    由于在django的model中配置了filefield或者imagefield配置了upload to参数只能将用户上传的文件上传到项目本地 就算重定向到项目外也只是直接读取文件系统 这样对未来的项目迁移或者资源管理都会造成很大的困扰 而