后台

  1. import json
  2. from django.shortcuts import render,HttpResponse,HttpResponseRedirect
  3. import os
  4. import json
  5. BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  6.  
  7. def upload(request):
  8.  
  9. if request.method == 'GET':
  10. return render(request, 'form.html')
  11. else:
  12. file_name = request.POST.get('user')
  13. pwd = request.POST.get('pwd')
  14. file_obj = request.FILES.get('file')
  15.  
  16. f = open(os.path.join(BASE_DIR, 'static','images',file_name+'.png'), 'wb')
  17. # print(file_obj, type(file_obj))
  18.  
  19. for chunk in file_obj.chunks():
  20. f.write(chunk)
  21. f.close()
  22.  
  23. msg = {
  24. 'status':True,
  25. 'msg':'上传成功',
  26. 'fileName':file_name,
  27. 'pwd':pwd
  28. }
  29. return HttpResponse(json.dumps(msg))
  30.  
  31. def morefiles(request):
  32. if request.method == 'GET':
  33. return render(request, 'morefile.html')
  34. else:
  35. file_name = request.POST.get('userName')
  36. pwd = request.POST.get('password')
  37. #获取单个文件
  38. # file_obj = request.FILES.get('files')
  39. print(file_name,pwd)
  40. #获取多个文件对象
  41. files = request.FILES.getlist('files')
  42. print(files)
  43. for f in files:
  44.  
  45. destination = open(os.path.join(BASE_DIR, 'static','images',f.name),'wb+')
  46. for chunk in f.chunks():
  47. destination.write(chunk)
  48. destination.close()
  49.  
  50. msg = {
  51. 'status':200,
  52. 'msg':'上传成功',
  53. # 'fileName':file_name,
  54. # 'pwd':pwd
  55. }
  56. return HttpResponse(json.dumps(msg))

 前端

  1. <html>
  2. <head>
  3. <title>login test</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <meta http-equiv="pragma" content="no-cache">
  6. <meta http-equiv="cache-control" content="no-cache">
  7. <meta http-equiv="expires" content="0">
  8. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  9. <meta http-equiv="description" content="ajax方式">
  10. <!-- <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>-->
  11. <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-1.8.3.min.js"></script>
  12. <script type="text/javascript">
  13. $(function () {
  14. let fileList = [];
  15. let files = $("#files");
  16. files.on("change", function (event) {
  17. for (var i = 0; i < files[0].files.length; i++) {
  18. fileList.push(files[0].files[i]);
  19. }
  20. console.log(fileList)
  21. });
  22.  
  23. $("#login").click(function () {
  24. let formData = new FormData();
  25. fileList.forEach(function (file,index) {
  26. formData.append('files', file, file.name);
  27. })
  28. formData.append("userName",$("#userName").val())
  29. formData.append("password",$("#pwd").val())
  30.  
  31. $.ajax({
  32. //几个参数需要注意一下
  33. type: "POST",//方法类型
  34. dataType: "json",//预期服务器返回的数据类型
  35. url: "/morefiles/" ,//url
  36. data: formData,
  37. contentType:false,
  38. processData:false,
  39. success: function (result) {
  40. console.log(result);//打印服务端返回的数据(调试用)
  41. if (result.resultCode == 200) {
  42. alert("SUCCESS");
  43. }
  44. ;
  45. },
  46. error : function() {
  47. alert("异常!");
  48. }
  49. });
  50. })
  51. })
  52.  
  53. </script>
  54. </head>
  55. <body>
  56. <div id="form-div">
  57. <form id="form1" onsubmit="return false" action="/" method="post" enctype="multipart/form-data">
  58. <p>用户名:<input id="userName" name="userName" type="text" id="txtUserName" tabindex="1" size="15" value=""/></p>
  59. <p>密 码:<input id="pwd" name="password" type="password" id="TextBox2" tabindex="2" size="16" value=""/></p>
  60. <p>附件: <input id="files" type="file" name="files" multiple="multiple"></p>
  61. <p><input id="login" type="button" value="登录" > <input type="reset" value="重置"></p>
  62. </form>
  63. </div>
  64. </body>
  65. </html>

  

python 上传多文件的更多相关文章

  1. windows上python上传下载文件到linux服务器指定路径【转】

    从windows上传文件到linux,目录下的文件夹自动创建 #!/usr/bin/env python # coding: utf-8 import paramiko import datetime ...

  2. Selenium+python上传本地文件或者图片

    基于input标签的,有属性type = file: 首先定位到点击上传的元素(input)然后直接使用send_keys()将文件在本地的路径传进去 代码如下(例子来源于本页面上传图片和文件): f ...

  3. python 上传下载文件

    server.py #!/usr/bin/env python # -*- coding:utf- -*- import SocketServer import os class MySocketSe ...

  4. autoIT 自动化上传/下载文件图文详解【python selenium】

    情景: 在用selenium进行web页面自动化时,时不时会遇到上传附件的情况,常见的情况就是一个上传按钮,点击后弹出windows窗口,选择文件后上传,如下图1所示 图1 这种情况超出了seleni ...

  5. python接收html页面上传的文件

    使用的 flask, 没有安装的先安装 pip install flask 示例代码:示例没有自动创建静态文件夹,需要自己在同级 创建一个名为 static 的文件夹来存放上传的文件 示例展示为图片 ...

  6. python实现socket上传下载文件-进度条显示

    在python的socket编程中,可以实现上传下载文件,并且在下载的时候,显示进度条,具体的流程如下图所示: 1. 服务器端代码如下: [root@python 519]# cat server.p ...

  7. python 使用paramiko模块上传本地文件到ssh

    我们要了解几个函数: paramiko.Tranport(("目标ip,端口"))#这是上传目标的IP和端口 paramiko.SFTPClient.from_tranport() ...

  8. 初级版python登录验证,上传下载文件加MD5文件校验

    服务器端程序 import socket import json import struct import hashlib import os def md5_code(usr, pwd): ret ...

  9. 上传本地文件到github仓库基本操作

    上传文件到github时老师忘记指令,或者总是出一些错,每次都要百度浪费时间,因此将常用操作指令归纳卸载这里,以后再也不要担心百度找帖子了... 第一步:新建仓库 新建仓库步骤省略,最后我们得到一个仓 ...

随机推荐

  1. qt坐标系统见解

    窗口坐标为逻辑坐标,是基于视口坐标系的. 视口坐标为物理坐标,是基于绘图设备坐标系的 窗口坐标始终以视口坐标为最终目标进行映射: QPainter::setWindow 修改了窗口位置和大小(左上角重 ...

  2. hdoj1711(kmp算法)

    题目链接:https://www.cnblogs.com/kuangbin/archive/2012/08/14/2638803.html 题意:给定两个数组a.b,在数组a中查找b,求第一次出现的下 ...

  3. Win10修改字体

    先将自己喜欢的字体下载下来. 把自己喜欢的字体下载之后,一般会是一个压缩包,将其解,格式是ttf. 点击解压后的字体文件,将其安装在windows系统之中. 键盘上先按住win,在按R,出现一个窗口, ...

  4. springboot+JPA 整合redis

    1.导入redis依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifact ...

  5. 后台返回数据为map集合,前端js处理方法

    当后台返回的数据不是json而是map集合的时候,前端js中处理就将其看作是一个数组,例如后台返回的代码入下: Map<String, String> result = new HashM ...

  6. Web API 接口版本控制 SDammann.WebApi.Versioning

    前言 在设计对外 Web API 时,实务上可能会有新旧版本 API 并存的情况,例如开放 Web API 给厂商串接,但同一个服务更新版本时,不一定所有厂商可以在同一时间都跟着更新他们的系统,但如果 ...

  7. 4.Servlet(动态web资源)

    Servlet (动态web资源) 开发一个动态web资源(即开发一个Java程序向浏览器输出数据) 需完成以下两个步骤 1.编写一个Java类,实现servelet接口 2.把开发好的Java类部署 ...

  8. 【jekins】jenkins构建触发

    一.定时构建的语法 * * * * *(五颗星,中间用空格隔开)第一颗*表示分钟,取值0~59第二颗*表示小时,取值0~23第三颗*表示一个月的第几天,取值1~31第四颗*表示第几月,取值1~12第五 ...

  9. Redis汇总

    开源项目 https://www.cnblogs.com/yswenli/p/9460527.html

  10. C#验证控件使用方法及常用正则表达式例析(转)

    ASP.NET为开发人员提供了一整套完整的服务器控件来验证用户输入的信息是否有效.这些控件如下: 1.RequiredFieldValidator:验证一个必填字段,如果这个字段没填,那么,将不能提交 ...