Django普通文件上传
前端代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="/static/jquery-3.2.1.min.js"></script>
<script src="/static/jquery.cookie.js"></script>
</head>
<body>
<h1>文件上传页面</h1>
<form action="/upload/" method="post" enctype="multipart/form-data">
{% csrf_token %}
<p>用户名:<input type="text" name="username"></p>
<p>文件:<input type="file" name="file"></p>
<input type="submit" value="提交"><span>{{ successful }}</span>
</form>
</body>
</html>
后端处理:
def upload(request):
if request.method == "GET":
return render(request,"upload.html")
else:
file_obj = request.FILES.get("file")
with open(file_obj.name,"wb") as f:
for line in file_obj:
f.write(line)
successful = "上传成功"
return render(request,"upload.html",locals())
效果图:


利用formdata上传文件:
用formdata上传需要先建立一个对象,然后这个对象吧里面的值append进去,串数据的时候直接把formdate串过去就好了
前端代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="/static/jquery-3.2.1.min.js"></script>
<script src="/static/jquery.cookie.js"></script>
</head>
<body>
<form action="" id="s1">
<p>姓名:<input type="text"></p>
<p>密码:<input type="password"></p>
<p>头像:<input type="file" id="upload" name="file"></p>
</form>
<p><button class="Ajax_send">Ajax_send</button><span class="login_error"></span></p> #button需要放在form表单外边 </body> <script>
function foo() {
$(".login_error").html("")
}
$(".Ajax_send").click(function () {
var formDate = new FormData();
formDate.append("username",$(":text").val());
formDate.append("password",$(":password").val());
formDate.append("avatar",$("#upload")[0].files[0]);
$.ajax({
url:"/ajax_form/",
type:"POST",
headers:{"X-CSRFToken":$.cookie('csrftoken')},
data:formDate,
contentType:false,
processData:false,
success:function (data) {
var data = JSON.parse(data);
if(!data["flag"]){
$(".login_error").html("用户名或密码错误")
setTimeout(foo,3000)
}
else{
alert("上传成功")
}
}
})
})
</script>
</html>
后端代码:
def ajax_form(request):
if request.method == "GET":
return render(request,"formdate.html")
else:
username = request.POST.get("username")
password = request.POST.get("password") file_obj = request.FILES.get("avatar")
print("===================>",file_obj)
with open(file_obj.name, "wb") as f:
for line in file_obj:
f.write(line) response = {"flag":False}
if username=="username" and password == "password":
response["flag"] = True
import json
return HttpResponse(json.dumps(response))
简单的上传操作会让页面刷新,还有利用ajax无刷新技术上传的方式↓
Django普通文件上传的更多相关文章
- python Django之文件上传
python Django之文件上传 使用Django框架进行文件上传共分为俩种方式 一.方式一 通过form表单进行文件上传 #=================================== ...
- day56:django:csrf_token&文件上传
目录 1.csrf介绍 2.django实现csrf_token认证 3.django实现文件上传 csrf介绍 什么是csrf? csrf:跨站请求伪造.攻击者通过HTTP请求将数据传送到服务器,从 ...
- Django(十七)文件上传
http://www.cnblogs.com/wupeiqi/articles/5703697.html - 文件上传 - 普通上传 - 自定义页面上传按钮 ...
- 框架----Django之文件上传
一.文件上传 1. 浏览器访问 http://127.0.0.1:8000/f1/ http://127.0.0.1:8000/f2/ 2. urls from django.conf.urls im ...
- Django的文件上传以及预览、存储
思路: 文件上传通过前端的input标签,input设置display:none属性. 内容显示需要让前端通过<img>标签读取图片内容,可以通过<label>标签连接< ...
- Django实现文件上传功能
文件上传 关注公众号"轻松学编程"了解更多. 1.创建上传文件夹 在static文件夹下创建uploads用于存储接收上传的文件 在settings中配置,MEDIA_ROOT=o ...
- django 的文件上传
template html(模板文件): <form enctype="multipart/form-data" method="POST" action ...
- Django处理文件上传File Uploads
HttpRequest.FILES 表单上传的文件对象存储在类字典对象request.FILES中,表单格式需为multipart/form-data <form enctype="m ...
- Django之文件上传
一.form表单上传文件 注意: 1.form上需要加enctype="multipart/form-data" 2.form提交的地址需要以/结尾 def form_file(r ...
随机推荐
- 前端MVC Vue2学习总结(二)——Vue的实例、生命周期与Vue脚手架(vue-cli)
一.Vue的实例 1.1.创建一个 Vue 的实例 每个 Vue 应用都是通过 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项 }) 虽然没有完全遵循 ...
- iOS 跳转到 App Store 下载评分页面
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- CentOS 7 学习(三)配置Tomcat集群
所谓集群,就是把多台服务器集合起来,对外提供一个接口访问,对用户来说完全透明,常用的办法就是前端放一个服务器,将用户请求分发到不同的服务器,大致有以下几种方案 1)采取DNS轮询:将用户的连接解析到不 ...
- 【CSS3】浏览器内核、私有前缀
浏览器内核 私有前缀 浏览器 webkit -webkit- chrome.safari.安卓.ios trident -ms- IE gecko -moz- firefox presto -o- o ...
- Jstree 使用CheckBox插件 选中父节点时被禁用的子节点也会选中问题
问题描述: 最近用jstree遇到一个问题,使用CheckBox插件时,当父节点选中时,被禁用的子节点也会选中如下 解决方案: 1. 将jstree升级到最新的版本,v3.3.4及以上就可以 2. ...
- Java I/O---字符与字节转换流---FileReader&FileWriter:
public class SubTransStreamDemo { /** * @param args * @throws IOException */ public static void ma ...
- php项目报错 Warning: session_start(): open(D:/software/wamp/wamp/tmp\sess_msrjot7f32ciqb1p2hr4ahejg4, O_RDWR) f
今天一个php项目报错: Warning: session_start(): open(D:/software/wamp/wamp/tmp\sess_msrjot7f32ciqb1p2hr4ahejg ...
- [置顶]
xamarin android 布局尺寸了解
为了使UI界面在不同大小的移动端显示器上能够正常显示,大家可能都知道使用sp作为字体大小的单位,dp作为其他元素长度的单位. 前几天看了一篇文章关于 App设计规范的,文章用心写的非常好,这里是链接 ...
- 尤克里里 ukulele 单板 非kaka tom uma
本店冲人气优惠,不搞倒闭之类的事 23寸尤克里里 单板 单板 单板 彩贝镶边演出大气 单板 单板 单板 彩贝镶边演出大气 单板 单板 单板 彩贝镶边演出大气 配件选购40元全套(加棉琴包.金属变调夹. ...
- KMP 算法 C++
#include <iostream>#include<string.h>#include<stdio.h>using namespace std; void Co ...