前端实现

<!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

图示:

上传前:

进行上传:

上传后:

最新文章

  1. Java将TXT上的数据转换成excel里面
  2. CG Rendering v.s. Browser Rendering
  3. jstree静态生成树并为树添加触发事件
  4. hdu4968
  5. .net平台下C#socket通信(上)
  6. storm,hbase和storm-kafka-0.8-plus兼容性问题
  7. C#中使用GUID的笔记
  8. Spring MVC 解读——@RequestMapping (2)(转)
  9. linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)
  10. 写一个带文本菜单的程序,菜单项如下 (1) 取五个数的和 (2) 取五个数的平均值 (X) 退出。
  11. Spring官方文档下载
  12. SpringCloud概述
  13. [JZOJ5837] Omeed
  14. sas spawner
  15. [剑指Offer]34-二叉树中和为某一值的路径
  16. 安卓调试桥(ADB)环境变量的配置
  17. 第1章:程序设计和C语言(C语言入门)
  18. iOS多线程与网络开发之NSURLCache
  19. sqlplus--spool命令参数详解
  20. Idea_学习_03_IDEA中使自定义类型的文件进行代码高亮识别

热门文章

  1. java Map根据value排序
  2. JavaScript AJAX原生写法
  3. cocos2d-x 3.0 回调函数
  4. Docker: devicemapper fix for “device or resource busy” (EBUSY) Cannot start container
  5. java.lang.NoSuchMethodError: org.springframework.beans.factory.config.ConfigurableBeanFactory.getSingletonMutex()Ljava/lang/Object
  6. lua学习笔记(六)
  7. args *args **kwargs区别
  8. synchronized是什么
  9. hasOwnProperty()与in操作符的区别
  10. 数仓interview总结