三种ajax上传文件方法

1.  XMLHttpRequest(原生ajax)

<input class="file" type="file" id="fafafa" name="fileupload" />

<input type="button" value="提交XHR" onclick="xhrSubmit();"/>

<script type="text/javascript">

functionxhrSubmit() {

{# $('#fafafa')[0]注意这儿的写法#}

varfile_obj = document.getElementById('fafafa').files[0];

varfd =newFormData();

fd.append('fafafa',file_obj);

xhr=newXMLHttpRequest();

xhr.open('POST', '/upload_file/',true)

xhr.send(fd);

xhr.onreadystatechange=function() {

//后端接受完毕

if(xhr.readyState == 4){

varobj =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">

functionjqSubmit() {

{# $('#fafafa')[0]#}

varfile_obj = document.getElementById('fafafa').files[0];

varfd =newFormData();

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>



4. python后端处理

fafafa = request.FILES.get('fafafa')

importos

img_path= os.path.join('static/images',fafafa.name)

#下面这句等于 f = open(str(fafafa),mode='wb),并且添加了清理功能(f.close)。

with open(img_path,'wb') as f:

foriteminfafafa.chunks():

f.write(item)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 7,983评论 0 3
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,243评论 0 2
  • # Ajax标签(空格分隔): 笔记整理---[TOC]### 从输入网址开始:- 在学习ajax之前,你应该先了...
    V8阅读 2,394评论 1 0
  • 常见异步上传方案 使用第三方控件(Flash,ActiveX, 浏览器插件等) 优点: 交互与可控性好(多文件、进...
    daoyidao阅读 4,905评论 1 4
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 13,175评论 0 3

友情链接更多精彩内容