bbs项目富文本编辑器实现上传文件到media目录详解编程语言
2023-06-13 09:11:54 时间
media目录是在project的settings中设置的,static目录是django自己使用的静态文件的上传目录,media目录是用户自定义上传文件的目录
# Django用户上传的文件都放在media目录下 MEDIA_URL = "/media/" MEDIA_ROOT = os.path.join(BASE_DIR,"media")
我们这样设置了,django还是找不到我们的media目录,还需要在路由系统系统设置,我们这里在django的一级路由中设置
首先需要导入2个模块
from django.conf import settings from django.views.static import serve
然后定义路由映射的关系,这个是固定写法
url(r^media/(?P path .*)$, serve, {"document_root": settings.MEDIA_ROOT}),
然后我们就可以使用media目录存储我们上次的文件,django就可以找到这个目录下的文件了
先看下我们的富文本编辑器
!DOCTYPE html html lang="en" head meta charset="UTF-8" title Title /title link rel="stylesheet" href="/static/css/bootstrap-theme.css" /head body h2 {{ auther }}个人博客站点管理后台 /h2 h3 文章标题 /h3 form method="post" enctype="multipart/form-data" action="" {% csrf_token %} label for="article_id" /label input type="text" id="article_id" placeholder="文章标题" name="new_article_name" h3 文章内容 /h3 textarea name="new_article_content" cols="70" rows="20" id="editor_id" /textarea input type="submit" value="提交" /form script src="/static/jq/jquery-3.3.1.js" /script script charset="utf-8" src="/static/kindeditor/kindeditor-all.js" /script {# script charset="utf-8" src="/static/kindeditor/lang/zh-CN.js" /script #} script KindEditor.ready(function(K) { window.editor = K.create(#editor_id,{ width : 1200px, item:[ source, |, undo, redo, |, preview, print, template, code, cut, copy, paste, plainpaste, wordpaste, |, justifyleft, justifycenter, justifyright, justifyfull, insertorderedlist, insertunorderedlist, indent, outdent, subscript, superscript, clearhtml, quickformat, selectall, |, fullscreen, /, formatblock, fontname, fontsize, |, forecolor, hilitecolor, italic, underline, strikethrough, lineheight, removeformat, |, image, multiimage, flash, media, insertfile, table, hr, emoticons, baidumap, pagebreak, anchor, link, unlink, |, about uploadJson:"/app1/upload/", extraFileUploadParams:{ csrfmiddlewaretoken:$("[name=csrfmiddlewaretoken]").val() filePostName:"upload_img" }); }); /script /body /html
前端的效果是
这里我们点击上传文件,看下后台的视图函数的处理,把上传的文件写到media目录中,然后把写的图片的地址返回到前端,富文本编辑器就会去找media中找到对应的路径,然后渲染到前台页面上
from bbs import settings from django.http import JsonResponse import os def upload(request): print(settings.MEDIA_ROOT,type(settings.MEDIA_ROOT)) file_obj = request.FILES.get("upload_img") upload_path = os.path.join(settings.MEDIA_ROOT,"upload",file_obj.name) with open(upload_path,"wb") as f: for line in file_obj: f.write(line) res={ "error":0, "url":"/media/upload/"+file_obj.name
相关文章
- ctf-web:文件上传漏洞和文件解析漏洞
- 通过Go写一个简易版的上传文件到存储的工具
- asp.net mvc实现文件下载「建议收藏」
- Hive、SparkSQL是如何决定写文件的数量的?
- Centos7 运行Springboot打包后的jar文件的相关操作
- Fuxploider:一款针对文件上传漏洞的安全检测与研究工具
- 【Linux】文件权限的理解
- SQLServer 错误 17067 SQL Server断言:文件: <%s>,行 = %d %s。 此错误可能与时间有关。 如果重新运行该语句后错误仍然存在,请使用 DBCC CHECKDB 来检查数据库的结构是否完整,或重新启动服务器以确保内存中的数据结构未破坏。 故障 处理 修复 支持远程
- Go语言二进制文件的读写操作
- iOS文件操作的代码详解手机开发
- Linux点文件:解开迷雾(linux点开头的文件)
- 管理Linux文件管理实战指南(linux..文件)
- 使用SSH连接远程Linux服务器并上传文件(ssh上传文件到linux服务器上)
- 解锁Linux文件地址的奥秘(linux文件地址)
- 限制解决MySQL文件上传大小的限制(mysql文件上传大小)
- 到WindowsLinux利用SSH拷贝文件至Windows系统(ssh从linux拷文件)
- Linux下快速传输文件的rz命令(linux上传文件rz)
- 部署妙用Oracle TRM文件实现部署(oracletrm文件)
- 服务器Mac端将文件传输到Linux服务器的指南(mac上传文件到linux)
- Linux文件合并的Cat命令(linux 文件合并命令)
- Linux文件合并命令实现快速数据合并(linux 文件合并命令)
- MySQL数据库恢复之旅dmp文件传奇(.dmp mysql)
- MySQL上传SQL文件过大处理方法(mysql上传sql大小)
- MySQL的本质不是可执行程序(mysql不是可运行文件)
- 用asp实现文件浏览、上传、下载的程序
- 自制的文件上传JS控件可支持IE、chrome、firefoxetc
- C#实现HTTP上传文件的方法
- PHP中上传多个文件的表单设计例子
- asp.net中MVC借助Iframe实现无刷新上传文件实例