jquery上传图片_文件上传三种方式

来源:python宝典    链接:

https://mp.weixin.qq.com/s/YUplCQDfAucA_rS8E1T6WA

需求

上传图片在页面显示

Form表单上传

<html lang="en"><head><meta charset="UTF-8"><title>Titletitle>head><body><form method="POST" action="/upload.html" enctype="multipart/form-data"><input type="text" name="user" /><input type="file" name="fafafa" /><input type="submit" value="提交" />form><div>
      {% if img %}<img style="height: 200px;width: 200px;" src="/{{ img }}" />
      {% endif %}div><script src="/static/jquery-2.1.4.min.js">script>body>html>
//后台代码
from django.shortcuts import render
import os
def upload(request):
  if request.method == 'GET':
      return render(request,'upload.html')
  elif request.method == "POST":
      user = request.POST.get('user')
      fafafa = request.POST.get('fafafa')
      obj = request.FILES.get('fafafa')
      file_path = os.path.join('static','upload',obj.name)
      f = open(file_path, 'wb')
      for chunk in obj.chunks():
          f.write(chunk)
      f.close()
      ret = {'status': True, 'path': file_path}
      return render(request,"upload.html",{'img':file_path})

缺点:上传后整个页面会刷新,不好

Ajax上传

<html lang="en"><head><meta charset="UTF-8"><title>Titletitle><style>.container img{width: 200px;height: 200px;
      }style>head><body><input ID="v1" name="user" placeholder="用户"><input type="file" name="fafafa" id="img" /><input type="button" value="提交XML" onclick="UploadXML()" /><input type="button" value="提交JQ" onclick="Uploadjq()" /><div id="imgs">div>body><script src="/static/jquery-2.1.4.min.js">script><script>function UploadXML() {var dic = new FormData();
          dic.append('user', $('#v1').val());
          dic.append('fafafa', document.getElementById('img').files[0]);var xml = new XMLHttpRequest();
          xml.open('post', '/upload.html', true);
          xml.onreadystatechange = function () {if(xml.readyState == 4){var obj = JSON.parse(xml.responseText);console.log(obj)if(obj.status){var img = document.createElement('img');
                      img.src = "/" + obj.path;document.getElementById("imgs").appendChild(img);
                  }
              }
          };
          xml.send(dic);
      }function Uploadjq() {var dic = new FormData();
          dic.append('user', $('#v1').val());
          dic.append('fafafa', document.getElementById('img').files[0]);
          $.ajax({url: '/upload.html',type: 'POST',data: dic,processData: false,  // tell jQuery not to process the data
              contentType: false,  // tell jQuery not to set contentType
              dataType: 'JSON',success: function (arg) {if (arg.status){console.log("111")var img = document.createElement('img');
                      img.src = "/" + arg.path;
                      $('#imgs').append(img);
                  }
              }
          })
      }script>body>html>
/后台代码
from app01 import models
import json
from django.shortcuts import render,HttpResponse
import os,json
def upload(request):
  if request.method == 'GET':
      return render(request,'upload.html')
  elif request.method == "POST":
      user = request.POST.get('user')
      print(user)
      fafafa = request.POST.get('fafafa')
      obj = request.FILES.get('fafafa')
      file_path = os.path.join('static','upload',obj.name)
      f = open(file_path, 'wb')
      for chunk in obj.chunks():
          f.write(chunk)
      f.close()
      ret = {'status': True, 'path': file_path}
      return HttpResponse(json.dumps(ret))

实现了异步刷新,但是部分老版本的浏览器不支持FormData对象

基于iframe实现form提交

<html lang="en"><head><meta charset="UTF-8"><title>Titletitle><style>.container img{width: 200px;height: 200px;
      }style>head><body><h1>基于iframe实现form提交h1><form action="/upload.html" method="post" target="iframe_1" enctype="multipart/form-data"><iframe style="display: none"  id="iframe_1" name="iframe_1" src="" onload="loadIframe();">iframe><input type="text" name="user" /><input type="file" name="fafafa" /><input type="submit" value="提交" />form><div id="imgs">div>body><script src="/static/jquery-2.1.4.min.js">script><script>function loadIframe() {console.log(1);// 获取iframe内部的内容var str_json = $('#iframe_1').contents().find('body').text();var obj = JSON.parse(str_json);if (obj.status){var img = document.createElement('img');
              img.src = "/" + obj.path;
              $('#imgs').append(img);
          }
      }script>body>html>
///后台代码
from django.shortcuts import render,HttpResponse
import os,json
def upload(request):
  if request.method == 'GET':
      return render(request,'upload.html')
  elif request.method == "POST":
      user = request.POST.get('user')
      print(user)
      fafafa = request.POST.get('fafafa')
      obj = request.FILES.get('fafafa')
      file_path = os.path.join('static','upload',obj.name)
      f = open(file_path, 'wb')
      for chunk in obj.chunks():
          f.write(chunk)
      f.close()
      ret = {'status': True, 'path': file_path}
      return HttpResponse(json.dumps(ret))

效果

99e13e4923004a8a6aaf3c519153e733.png


python爬虫人工智能大数据公众号

3e168bd20ed746ce05ff0ecb5fbdeadf.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244812.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue seo关键词设置_SEO关键词优化排名的几个技巧

关键词是优化网站必须要思考分析的&#xff0c;SEO网站优化过程中&#xff0c;网站的文章内容及标题优化&#xff0c;那么必须要考虑到网站的主关键词与长尾关键词了。那么&#xff0c;SEO关键词优化排名的技巧有哪些&#xff1f;下面眼前一亮就跟大家分享下SEO关键词快速排名技…

loadrunner录制事件为0_Oracle数据库性能监控|LoadRunner 中配置监控Oracle

Oracle 是目前世界上大型应用系统广泛使用的数据库&#xff0c;Oracle 数据库产品为财富排行榜上的前1000 家公司所采用&#xff0c;许多大型网站也选用了Oracle 系统。Oracle 内部结构比较复杂&#xff0c;如图8.1 所示&#xff0c;出现性能问题的可能性是比较大的。因此在性能…

闪退的解决方法_王者荣耀2.0不闪退需要什么手机?王者荣耀2.0闪退解决方法

[海峡网]国民级手游《王者荣耀2.0》刚刚上线不久&#xff0c;很多玩家就发现游戏的时候出现了闪退、卡顿严重等严重影响游戏体验的情况&#xff0c;虽然官方做出了补丁更新的动作&#xff0c;但是依旧有很多小伙伴注定与《王者荣耀2.0》无缘&#xff0c;那么&#xff0c;为了玩…

string函数_C++[06] string成员函数之删除函数erase

介绍一下删除函数erase&#xff0c;老方法&#xff0c;新建cpp文件&#xff0c;并找到string的erase成员函数&#xff0c;可以看到&#xff0c;erase有3个重载函数右键转到定义&#xff0c;可以查看erase的源码_Myt& erase(size_type _P0 0, size_type _M npos){ if …

pc端jquery左右按钮控制带缩略图的图片切换代码_Web开发实用的图片预览插件,简单零依赖——PhotoSwipe...

介绍PhotoSwipe是一个JavaScript库&#xff0c;没有依赖项。要说唯一的依赖项那就是Vanilla.js(原生js),因此你可以在你的任何Web项目中使用&#xff0c;包括主流的Vue、React、Angular以及传统jQuery的项目。PhotoSwipe可以被用到各种大中小型项目当中&#xff0c;并且PC和移动…

怎么调试内存溢出的c++代码_【C/C++】内存对齐 到底怎么回事?

1 明确几个概念代码分区&#xff1a;在使用C/C编程时&#xff0c;我们定义的变量存在于内存中&#xff0c;而内存在C语言的角度上可以分为五大区。局部变量在栈区&#xff0c;静态/全局变量在全局区&#xff0c;动态申请的变量存在于堆区&#xff0c;const修饰的变量/字符常量存…

js粘贴板为什么获取不到图片信息_图床+typora,告别markdown中关于图片的困惑

在上一篇文章中向大家介紹了几款软件&#xff0c;这篇文章主要分享一下markdown编辑器typora软件如何使用图床&#xff0c;快速的将图片加载到markdown文档中。图床&#xff1a;指存储图片的服务器&#xff0c;将图片上传到服务器上&#xff0c;转换成链接为什么使用图床&#…

计算机二级mysql是什么_计算机二级mysql考什么内容?

计算机二级mysql考什么内容&#xff1f;一、基本概念与方法&#xff11;、数据库基础知识(1)数据库相关的基本概念(2)数据库系统的特点与结构(3)数据模型2、关系数据库、关系模型3、数据库设计基础(1)数据库设计的步骤(2)关系数据库设计的方法4、MySQL概述(1)MySQL系统特性与工…

eclipse软件有时会退出弹出一串错误弹框_修复iPhone上的iOS 13软件更新失败错误...

如果由于“软件更新失败&#xff1a;下载iOS 13时发生错误”错误而无法安装刚刚发布的用于检查新的暗模式功能的iOS 13更新&#xff0c;那么我可以理解这种挫败感。但幸运的是&#xff0c;有些解决方案可以尝试修复某些用户报告的iOS 13软件更新失败错误。解决iPhone 13软件失败…

mysql第四章分页显示查询出租房屋信息_MYSQL必知必会读书笔记第四章之检索数据...

MySQL是一种开放源代码的关系型数据库管理系统(RDBMS)&#xff0c;MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。使用Select语句返回的数据&#xff0c;可能会发现显示的数据会与其他的地方顺序不同。出现这种情况很正常。如果没有明确排序…

vep文件如何转换mp4_如何将DVD的vob视频格式转换成mp4格式

首先简述一下&#xff0c;VOB是DVD Video OBject的缩写&#xff0c;vob文件用来保存所有MPEG-2格式的音频和视频数据&#xff0c;这些数据不仅包含影片本身&#xff0c;而且还有供菜单和按钮用的画面以及多种字幕的子画面流。如何把视频vob格式转换成任意格式视频文件呢&#x…

esp8266接收到的数据如何存放到数组中_Java中HashMap的实现原理

最近面试中被问及Java中HashMap的原理&#xff0c;瞬间无言以对&#xff0c;因此痛定思痛觉得研究一番。一、Java中的hashCode和equals1、关于hashCodehashCode的存在主要是用于查找的快捷性&#xff0c;如Hashtable&#xff0c;HashMap等&#xff0c;hashCode是用来在散列存储…

python测试用例管理_Python测试框架Pytest的常用插件测试报告

原标题&#xff1a;Python测试框架Pytest的常用插件测试报告一、pytest-html 生成 html 测试报告 要求&#xff1a;Python 3.6 安装&#xff1a;pip install pytest-html 文档&#xff1a;https://github.com/pytest-dev/pytest-html、https://www.cnblogs.com/linuxchao/p/lin…

python symbol函数展开_QGIS表达式中的函数

编程语言中的函数&#xff0c;与数学函数的定义大不相同。在计算机领域&#xff0c;函数是指一段可以直接被另一段程序或代码引用的程序或代码&#xff0c;也叫做子程序(subroutine)、过程(procedure)、方法(method)。函数在QGIS表达式构建过程中起到重要作用&#xff0c;表达式…

layui 金额数据千分位_IG神秘打野韩服数据,盲僧数据或暗示英雄池问题

在LPL春季赛结束&#xff0c;而夏季赛还未开始的这段时间&#xff0c;是LPL各大战队能够利用的宝贵时间。为了备战S10&#xff0c;有一些队伍确实需要引援。而在这次转会期期间&#xff0c;率先出现转会传闻的是IG战队。据传IG打野Leyan有离队的可能&#xff0c;同时IG也在积极…

python设计模式pdf_精通Python设计模式 高清晰PDF+源码

精通Python设计模式讲述了16种基本设计模式&#xff0c;轻松解决软件设计常见问题&#xff1b;借力高效的Python语言&#xff0c;用现实例子展示各模式关键特性。 本书用实际生活中的例子带你了解常用的设计模式&#xff0c;介绍了诸多有关编写Python风格代码的底层细节和概念&…

datanode无法启动_Hadoop DataNode启动和初始化过程

简介我们先看DataNode的doc文档的介绍&#xff0c;DataNode是一个类&#xff0c;用于存储一组块&#xff0c;用于DFS部署。单个部署可以有一个或多个DataNode。每个DataNode通信定期与单个NameNode进行通信。它还可以与客户端和其他的DataNodes通信。DataNode存储一系列命名的块…

挖掘机燃料_2020广东挖掘机工程机械出租公司合作共赢

如今的挖掘机具有比以往更多的内置安全功能&#xff0c;但这并不意味着只有任何人都可以爬上驾驶室并安全操作。1、仔细检查地面区域使用挖掘机时&#xff0c;诸如岩石、建筑材料和树桩之类的物品会损害安全性。在开始操作机器之前&#xff0c;请确保已将其从该区域中清理。此外…

mysql对所有列的数据进行修改6_MySQL的SQL语句 - 数据定义语句(6)- ALTER TABLE 语句 (3)...

添加和删除列使用ADD向表中添加新列&#xff0c;使用DROP删除现有列。DROP col_name是对标准SQL的MySQL扩展。若要在表行的特定位置添加列&#xff0c;请使用FIRST col_name 或者 AFTER col_name。默认情况是添加到最后。如果表只包含一列&#xff0c;则不能删除该列。如果您想…

ant构建项目迁移到gradle_Gradle构建工具

构建工具的作用&#xff1a;依赖管理&#xff1b;测试、打包、发布&#xff1b;机器能干的活&#xff0c;绝不自己动手。主流构建工具&#xff1a;(1)Ant&#xff1a;编译、测试、打包&#xff1b;(2)Maven&#xff1a;依赖管理、发布&#xff1b;(3)Gradle&#xff1a;Groovy&…