使用ajax上传文件
1. XMLHttpRequest(原生ajax)
[
](javascript:void(0)
<input class="file" type="file" id="fafafa" name="fileupload" />
<input type="button" value="提交XHR" onclick="xhrSubmit();"/>
<script type="text/javascript">
function xhrSubmit() {
*{# $('#fafafa')[0]注意这儿的写法#}
var file_obj = document.getElementById('fafafa').files[0];
var fd = new FormData();
fd.append('fafafa',file_obj);
xhr = new XMLHttpRequest();
xhr.open('POST', '/upload_file/', true)
xhr.send(fd);
xhr.onreadystatechange = function () {
//后端接受完毕if(xhr.readyState == 4){
var obj = JSON.parse(xhr.responseText);
console.log(obj);
}
};
}
</script>
*
2.JQueryAjax
<input type="button" value="jQuery ajax提交" onclick="jqSubmit();"/>
<script type="text/javascript" src="/static/jquery-1.11.1.js"></script>
<script type="text/javascript">
function jqSubmit() {
{# $('#fafafa')[0]#}
var file_obj = document.getElementById('fafafa').files[0];
var fd = new FormData();
fd.append('username', 'root')
fd.append('fafafa', file_obj);
$.ajax({
url:'/upload_file/',
type:'POST',
data:fd,
processData:false, //tell jQuery not to process the data
contentType: false, //tell jQuery not to set contentType//这儿的三个参数其实就是XMLHttpRequest里面带的信息。
success:function (arg,a1,a2) {
console.log(arg);
console.log(a1);
console.log(a2);
}
})
}
</script>
3.伪ajax(iframe标签,既发送,也接受)
<form action="/upload_file/" method="POST" enctype="multipart/form-data" target="ifm1">
<iframe id="ifm1" name="ifm1"></iframe>
{% csrf_token %}
{# 这儿也可以设置自动提交,就把下面的提交去掉,加一个onchange="changeUpload();#}
<input type="file" name="fafafa"/>
<input type="submit" onclick="iframeSubmit()" name="提交"/>
</form>
<div id="preview"></div> <!-- 处理预览 -->
<script type="text/javascript">
function iframeSubmit() {
{# 等点了submit再加载load方法#}
$('#ifm1').load(function () {
var text = $('#ifm1').contents().find('body').text();
var obj = JSON.parse(text);
console.log(obj);
//处理预览
$('#preview').empty();
var imgTag = document.createElement('img');
{# 注意这儿的路径,得加上"/"#}
imgTag.src = "/" + obj.data;
$('#preview').append(imgTag);
})
}
</script>
使用ajax上传文件的更多相关文章
- IE8/9 JQuery.Ajax 上传文件无效
IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...
- springMVC+jsp+ajax上传文件
工作中遇到的小问题,做个笔记 实现springMVC + jsp + ajax 上传文件 HTML <body> <form id="myform" method ...
- Ajax上传文件进度条显示
要实现进度条的显示,就要知道两个参数,上传的大小和总文件的大小 html5提供了一个上传过程事件,在上传过程中不断触发,然后用已上传的大 小/总大小,计算上传的百分比,然后用这个百分比控制div框的显 ...
- 伪ajax上传文件
伪ajax上传文件 最近在折腾伪ajax异步上传文件. 网上搜索了一下,发现大部分方法的input file控件都局限于form中,如果是在form外的呢? 必须动态生成一个临时form和临时if ...
- flask jQuery ajax 上传文件
1.html 代码 <div> <form id="uploadForm" enctype="multipart/form-data" > ...
- ajax上传文件显示进度
下面要做一个ajax上传文件显示进度的操作,文末有演示地址 这里先上代码: 1.前端代码 upload.html <!DOCTYPE html> <html lang="e ...
- 闲话ajax,例ajax轮询,ajax上传文件[开发篇]
引语:ajax这门技术早已见怪不怪了,我本人也只是就自己真实的经验去总结一些不足道的话.供不是特别了解的朋友参考参考! 本来早就想写一篇关于ajax的文章的,但是前段时间一直很忙,就搁置了,趁着元旦放 ...
- ajax上传文件及进度显示
之前在博文:原生ajax写法就提及过ajax2.0与1.0的差别是多了FormData和利用FormData文件上传(当然还有跨域,但不是本文的重点). 那么具体怎么样实现ajax上传文件呢? 一般来 ...
- django 基于form表单上传文件和基于ajax上传文件
一.基于form表单上传文件 1.html里是有一个input type="file" 和 ‘submit’的标签 2.vies.py def fileupload(request ...
- Ajax 上传文件(input file FormData)
FormData对象用以将数据编译成键值对,以便用XMLHttpRequest来发送数据.其主要用于发送表单数据,但亦可用于发送带键数据(keyed data),而独立于表单使用. jQuery Aj ...
随机推荐
- JUC之线程间定制化通信
线程通信之定制化 之前文章中写了下Condition的使用,这里我们详细说下其中的用法: 首先使用Condition需要实例化Lock private Lock lock = new Reentran ...
- 编写Java程序,几个朋友到游乐场游玩,大家投票选择出行方式。使用程序来模拟这一结果。(工厂模式示例Demo)
查看本章节 查看作业目录 需求说明: 几个朋友到游乐场游玩,大家投票选择出行方式.如果选择"A"最多的话,表示选择的交通工具是公交车(Bus):如果选择"B"最 ...
- Kerberos加密级别不支持的问题
1.问题现象 Zookeeper开启kerberos认证后出现如下问题,不支持的加密级别: 2017-02-23 09:20:57,048 [myid:1] - WARN [NIOWorkerThre ...
- vuex 中使用Element-ui的message
首先引入Message 其次,在mutations中调用Message 注意:缓存的问题,如果没有弹出框架出现,多重启几次服务 参考资料: https://blog.csdn.net/weixin_4 ...
- Centos 7.6关闭selinux
查看selinux状态 [root@localhost ~]# sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SE ...
- react中create-react-app详情配置文档
https://facebook.github.io/create-react-app/docs/documentation-intro
- react中自定义antd主题与支持less(第二部)
自定义主题 首先自定义主题需要修改antd,antd本身也是less写的之后编译成css的,所以当我们需要使用less. 1.yarn add react-app-rewire-less --dev ...
- [BZOJ2761] [JLOI2011] 不重复数字 (C++ STL - set)
不重复数字 题目: 给出N个数,要求把其中重复的去掉,只保留第一次出现的数.例如,给出的数 为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复,去除后的结果为1 2 1 ...
- python+selenium 元素定位--iframe
1. 一般webdriver要操作页面元素需要在Top Window的状态下,如下: 2.当浏览器显示iframe时,用正常的元素定位是没有效果的,需要将页面装换到iframe下再对页面元素进行操作 ...
- Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...