Django 基于Ajax & form 简单实现文件上传
2024-09-04 16:03:32
前端实现
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>上传文件</title>
<script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body> <h2>基于form表单的上传文件</h2>
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
<p><input type="text" name="user"></p>
<p><input type="file" name="f"></p>
<input type="submit">
</form> <hr>
<h2>基于ajax上传文件</h2>
{% csrf_token %}
<p><input type="text" id="user"></p>
<p><input type="file" id="f"></p>
<button class="ajax_btn">上传</button> <script>
$(".ajax_btn").click(function () {
var formdata = new FormData();
formdata.append("user", $("#user").val());
formdata.append("csrfmiddlewaretoken", $("[name='csrfmiddlewaretoken']").val());
formdata.append("f", $("#f")[0].files[0]);
$.ajax({
url: "/put_ajax/",
type: "post",
data: formdata,
contentType: false,
processData: false,
success: function (data) {
alert("上传成功!")
}
}) })
</script> </body>
</html>
index.html
后端实现
from django.shortcuts import render, HttpResponse # Create your views here. def index(request):
if request.method == "POST":
print(request.POST)
print(request.FILES.get("f"))
f_obj = request.FILES.get("f")
name = f_obj.name
f_write = open(name, "wb")
for line in f_obj:
f_write.write(line)
return HttpResponse("上传成功")
return render(request, 'index.html') def put_ajax(request):
if request.is_ajax():
f_obj = request.FILES.get("f")
print(f_obj)
name = f_obj.name
print(name)
f_write = open(name, "wb")
for line in f_obj:
f_write.write(line)
return HttpResponse("上传成功")
return render(request, 'index.html')
Views.py
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^put_ajax/', views.put_ajax),
url(r'^index/', views.index),
]
url.py
图示:
上传前:
进行上传:
上传后:
最新文章
- Java将TXT上的数据转换成excel里面
- CG Rendering v.s. Browser Rendering
- jstree静态生成树并为树添加触发事件
- hdu4968
- .net平台下C#socket通信(上)
- storm,hbase和storm-kafka-0.8-plus兼容性问题
- C#中使用GUID的笔记
- Spring MVC 解读——@RequestMapping (2)(转)
- linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)
- 写一个带文本菜单的程序,菜单项如下 (1) 取五个数的和 (2) 取五个数的平均值 (X) 退出。
- Spring官方文档下载
- SpringCloud概述
- [JZOJ5837] Omeed
- sas spawner
- [剑指Offer]34-二叉树中和为某一值的路径
- 安卓调试桥(ADB)环境变量的配置
- 第1章:程序设计和C语言(C语言入门)
- iOS多线程与网络开发之NSURLCache
- sqlplus--spool命令参数详解
- Idea_学习_03_IDEA中使自定义类型的文件进行代码高亮识别
热门文章
- java Map根据value排序
- JavaScript AJAX原生写法
- cocos2d-x 3.0 回调函数
- Docker: devicemapper fix for “device or resource busy” (EBUSY) Cannot start container
- java.lang.NoSuchMethodError: org.springframework.beans.factory.config.ConfigurableBeanFactory.getSingletonMutex()Ljava/lang/Object
- lua学习笔记(六)
- args *args **kwargs区别
- synchronized是什么
- hasOwnProperty()与in操作符的区别
- 数仓interview总结