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,一经查实,立即删除!

相关文章

python 参数收集_Python基础教程第六章 6.4.4 收集参数

def print_params(*params):print paramsprint_params(Testing)print_params(1,2,3)输出结果(Testing,)(1, 2, 3)参数前的星号将所有值放置在同一个元组中&#xff0c;并且能与普通参数联合使用def print_params_2(title,*params):print titleprint paramsprint_params_2(Param…

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

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

python有没有帮助_没想到,python给我的帮助竟然这么大

2012年&#xff0c;SEO行业分为两派——技术派和理论派&#xff0c;技术派认为应该深入理解搜索引擎工作原理&#xff0c;学会web开发&#xff0c;这样做SEO才能走得远;理论派则认为只要掌握理论&#xff0c;会不会编程无所谓。当时SEO人员纷纷站队&#xff0c;在各大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 …

python安装缺少api怎么办_请问缺少win32api模块该如何解决?

32位WINDOWS7&#xff0c;PYTHON3.6.2环境下&#xff0c;一个简单的爬虫程序&#xff0c;加载了一些包&#xff1a; from scrapy.selector import Selector from scrapy import Spider from scrapy.spiders import CrawlSpider,Rule from scrapy.linkextractors.sgml import Sg…

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修饰的变量/字符常量存…

mysql数据备份与恢复_MySQL数据备份与恢复

常见的MySQL管工具mysql 命令行 跨平台 MySQL官方bundle包自带MySQL-Workbench 图形 跨平台 MySQL官方提供MySQL-Front 图形 Windows 开源&#xff0c;轻量级客户端软件phpMyAdmin 浏览器 跨平台 开源&#xff0c;需LAMP平台Navicat 图形 Windows 专业、功能强大、商业版PhpMyA…

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…

国开mysql答案_国开MySQL数据库应用形考任务.doc

《国开MySQL数据库应用形考任务.doc》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《国开MySQL数据库应用形考任务.doc(13页珍藏版)》请在装配图网上搜索。1、国开MySQL数据库应用形考任务1-4实验训练1 在MySQL中创建数据库和表请到电脑端查看实验目的熟悉MySQL环境的…

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也在积极…