上传文件的三种方式xhr,ajax和iframe

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        .upload {

            display: inline-block;
            background-color: #ef4300;
            cursor: pointer;
            width: 100px;
            height: 35px;
            text-align: center;
            position: absolute;
            line-height: 35px;
            top: 0;
            bottom: 0;
            right: 0;
            left: 0;
            z-index: 99;

        }

        .file {

            width: 100px;
            height: 35px;
            text-align: center;
            position: absolute;
            line-height: 35px;
            top: 0;
            bottom: 0;
            right: 0;
            left: 0;
            z-index: 100;
            opacity: 0;

        }

    </style>
</head>
<body>

<div style="position: relative;width: 100px;height: 35px">
<input type="file" id="i1" name="upload" class="file">
<a class="upload">上传</a>
</div>
<input type="submit" value="xhr提交" onclick="xhrSubmit();">

<input type="submit" value="ajax提交" onclick="ajaxSubmit();">

<script src="/static/jquery-1.12.4.js"></script>
<script src="/static/jquery.cookie.js"></script>

<form action="/xiaoqing/upload_file/" method="post" target="ifm1" enctype="multipart/form-data">
    {% csrf_token %}

    <iframe id="ifm2" name="ifm1"></iframe>
    <input type="file" name="upload">

    <input type="submit" onclick="iframesubmitForm();" value="Form提交" >

</form>

<script>

    var csrftoken = $.cookie(‘csrftoken‘);

//第一种上传方式  iframe
      function iframesubmitForm() {

           $(‘#ifm2‘).load(function(){

            var text= $(‘#ifm2‘).contents().find(‘body‘).text();
            var obj= JSON.parse(text);
              console.log(obj);
           })

       }

//第二种上传方法  ajax

    function ajaxSubmit() {
        var fileobj = document.getElementById(‘i1‘).files[0];
        console.log(fileobj);

        var fd = new FormData();   //依赖FormData对象
        fd.append(‘username‘, ‘root‘);
        fd.append(‘upload‘, fileobj);

        $.ajax({

            url: ‘/xiaoqing/upload_file/‘,
            type: ‘POST‘,
            data: fd,
            processData: false,
            cententType: false,
            headers: {‘X-CSRFtoken‘: csrftoken},
            success: function(arg,a1,a2){
                console.log(arg);
                console.log(a1);
                console.log(a2);

            }

        })

    }

//第三种上传方法  xhr对象
    function xhrSubmit() {

        var fileobj = document.getElementById(‘i1‘).files[0];
        console.log(fileobj);

        var fd = new FormData();   //依赖FormData对象
        fd.append(‘username‘,‘root‘);
        fd.append(‘upload‘,fileobj);

        var xhr= new XMLHttpRequest();   //创建对象

        xhr.open(‘POST‘,‘/xiaoqing/upload_file/‘,true);

        xhr.setRequestHeader(‘Content-Type‘,‘application/x-www-form-urlencoded; charset-UTF-8‘); //POST请求必须设置
        xhr.setRequestHeader(‘X-CSRFtoken‘,csrftoken);

        xhr.send(fd);
        xhr.onreadystatechange = function() {

            if(xhr.readyState == 4){
                var obj = JSON.parse(xhr.responseText);   //返回值
                console.log(obj);

            }
        }

    }

</script>

</body>
</html>

三种上传方式

def upload(request):

    return render(request,‘upload.html‘)

def upload_file(request):

    username=request.POST.get(‘username‘)
    upload_obj=request.FILES.get(‘upload‘)

    print(upload_obj)
    print(username)

    import os
    upload_path=os.path.join(‘uploads‘,upload_obj.name)

    with open(upload_path,‘wb+‘) as f:  

        for item in upload_obj.chunks():
            f.write(item)

    ret = {‘status‘:True,‘data‘:request.POST.get(‘username‘)}

    return HttpResponse(json.dumps(ret))

views.py

原文地址:https://www.cnblogs.com/sunhao96/p/9025704.html

时间: 2024-10-12 11:30:52

上传文件的三种方式xhr,ajax和iframe的相关文章

SpringMVC上传文件的三种方式(转载)

直接上代码吧,大伙一看便知 这时:commonsmultipartresolver 的源码,可以研究一下 http://www.verysource.com/code/2337329_1/commonsmultipartresolver.java.html 前台: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <%@ page language="java" contentTy

上传文件的三种方式

HTML Markup <div> <div> <h1>1. 用Web控件FileUpload,上传到网站根目录</h1> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="btnUpload" runat="server" Text="Upload" OnC

SpringMVC上传文件的三种解析方式

springMVC上传文件后,在action解析file文件的三种方式. jsp页面的写法: <form action="parserUploadFile1" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit"

ASP.NET上传文件的三种基本方法

ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法. 方法一:用Web控件FileUpload,上传到网站根目录. Test.aspx关键代码: [html] view plain copy <form id="form1" runat="server"> <asp:FileUpload ID="FileUpload1" runat="server&quo

django中上传文件的三种方式

前端代码: <style> .upload{ display: inline-block;padding: 10px; background-color: brown; position: absolute; top: 0; bottom: 0; right: 0; left: 0; z-index: 90; } .file{ width: 100px;height: 50px;opacity: 0; position: absolute; top: 0; bottom: 0; right:

前端上传文件的几种方式

出于安全考量,操作系统分配给浏览器的权限较低,而单个网页所拥有对用户电脑操作的权限就更低了,这是为了防止因用户的操作不当导致恶意网页随意增删改动用户本地的文件,所以在前端网页中所有的文件操作必须全都由用户来主动操作触发文件上传. 用户触发文件上传操作的类型大致有以下几种常用方法 使用input标签,通过一个type设置为file的输入框可以选中本地文件 通过html5的拖拽方法进行文件上传 通过在编辑框进行文件复制 下面我们就对这几种不同的上传方法进行一个详细的分析,分析不同方法的一个特效和优劣

java上传文件常见几种方式

1.ServletFileUpload 表单提交中当提交数据类型是multipare/form-data类型的时候,如果我们用servlet去做处理的话,该http请求就会被servlet容器,包装成httpservletRequest对象 ,在由相应的servlet进行处理.      package com.jws.app.operater.service.impl; import java.io.File; import java.util.HashMap; import java.uti

ASP.NET上传文件的几种方法

//上传文件实例 if (fileDealer.HasFile)//判断文件是否存在        {            string filepath = "";            try            {                string path = fileDealer.FileName;                string filename = path.Split('.')[0] + "_" + DateTime.Now

Simics虚拟机Solaris 8操作系统获取host 系统win7上的文件的两种方式

1 介绍 本文基于的环境设置如下: ? 宿主操作系统:Windows 7 Ultimate ? 寄生操作系统:Solaris 8 SPARC (SunOS 5.8) ? 虚拟环境:Simics 3.0.4 本文假定已在Simics 上安装好Solaris 8 SPARC 操作系统. 动机:一个Unix下可以运行的二进制文件GraphGen,在单独的一台装有Ubuntu的电脑上不能运行,因为该电脑的硬件架构是基于X86的,而GraphGen是SPARC架构下才能运行的程序:在我的笔记本Win7系统