使用ajax上传文件
1. XMLHttpRequest(原生ajax)
[ ](javascript:void(0)
](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 ... 
随机推荐
- Git 标签使用详解
			列出标签 # 默认按字母排序显示 $ git tag # 模糊匹配查找标签 $ git tag -l "v1.8.5*" 创建标签 # 创建附注标签 $ git tag -a v1 ... 
- Git_同一个本地仓库上传到不同的远端仓库(github、gitee)
			一.背景 github访问.推拉代码都太慢了,于是想把github上面的项目全部迁移到gitee(码云)上,但又不想放弃在github上维护项目,于是想同时维护两个远端仓库 二.准备工作 1.创建相同 ... 
- Nginx 添加防爬虫
			include agent_deny.conf; conf下添加 #禁止Scrapy|curl等工具的抓取 if ($http_user_agent ~* (Scrapy|Curl|HttpClien ... 
- linux .gz文件 压缩与解压缩命令
			1. 压缩文件 gzip 源文件 如压缩 b.txt 使用命令 gzip b.txt 注意 压缩为 .gz 文件 源文件会消失 如果想保留源文件 使用命令 gzip -c 源文件 > 压缩文件 ... 
- Java 单引号 与 双引号 区别
			双引号,用来引用字符串, 单引号用来表示单个字符. 
- Java定时调度
			一.实现方式 Timer:单线程,串行: ScheduledExecutor:并行,论询,实现麻烦: Spring Scheduler:适合小任务: JcronTab:按照crontab语法编写的ja ... 
- nuxt中报window is not defined
			1.如果是引用插件报错的话,原因是在服务端渲染时找不到window,这样在插件引入位置把ssr设置为false即可. plugins: [ { src: '@/plugins/iview', ssr: ... 
- c#多进程通讯,今天,它来了
			引言 在c#中,可能大多数人针对于多线程之间的通讯,是熟能生巧,对于AsyncLocal 和ThreadLocal以及各个静态类中支持线程之间传递的GetData和SetData方法都是信手拈来,那多 ... 
- nRF24L01无线模块笔记
			nRF24L01模块 官网链接: https://www.nordicsemi.com/Products/nRF24-series 常见的无线收发模块, 工作在2.4GHz频段, 适合近距离遥控和数据 ... 
- IExposedPropertyTable与ExposedReference的使用
			近期回顾Dead of the Book demo时,看见了它们的运用.感觉主要是用于ScriptableObject资源和Scene资源解耦: 并将这类做法规范化. 做一个小测试,IExposedP ... 
