• Ajax简单实现文件异步上传的多种方法


    1. 认识FormData对象

    FormData是Html5新加进来的一个类,可以模拟表单数据

    构造函数 解释
    FormData (optional HTMLFormElement form) (可选) 一个HTML表单元素,可以包含任何形式的表单控件,包括文件输入框.

    方法

    void append(DOMString name, DOMString value)

    • name 表单元素名称
    • value 表单元素要传递的值

    <form name="myForm"  enctype="multipart/form-data">
        <input type="text" name="userName">
        <input type="file" name="img">
        <input type="button" id="btn" value="submit">
    </form>
    
    
    

    2. 使用javascript简单实现

    function upload() {
        var userName = document.myForm.userName.value;
        var img = document.myForm.img.files[0];
        var fm = new FormData();
        fm.append('userName', userName);
        fm.append('img', img);
    
        var request = new XMLHttpRequest();
        request.open('POST', 'submitform.php');
        request.send(fm);
    }
    
    

    3. 使用Ajax实现

    $('#btn').click(function () {
        var userName = document.myForm.userName.value;
        var img = document.myForm.img.files[0];
        
        var fm = new FormData();
        fm.append('userName', userName);
        fm.append('img', img);
        $.ajax(
            {
                url: 'submitform.php',
                type: 'POST',
                data: fm,
                contentType: false, //禁止设置请求类型
                processData: false, //禁止jquery对DAta数据的处理,默认会处理
                //禁止的原因是,FormData已经帮我们做了处理
                success: function (result) {
                    //测试是否成功
                    //但需要你后端有返回值
                    alert(result);
                }
            }
        );
    });
    
    

    4. ajaxfileupload.js插件实现Ajax文件上传

    function upload(){
    $.ajaxFileUpload({
            url: 'a.php', //用于文件上传的服务器端请求地址
            secureuri: false, //一般设置为false
            fileElementId: 'file', //文件上传空间的id属性  
            dataType: 'HTML', //返回值类型 一般设置为json
            success: function (data, status)  //服务器成功响应处理函数
            {                
                $("#img1").attr("src", data);
                addI(data);
            },
            error: function (data, status, e)//服务器响应失败处理函数
            {
                alert(e);
            }
        }   
    );
    } 
    
    

    • 对于PHP就可以使用Files全局数组拿到文件属性,POST全局数组拿到userName的值

    文章一: 个人搭建翻墙服务器

    原文地址:https://www.jianshu.com/p/d90d2e6bb0d5
  • 相关阅读:
    Web性能优化系列(3):如何延迟加载JS
    Web性能优化系列(2):剖析页面绘制时间
    Web性能优化系列(1):Web性能优化分析
    页面制作之开发调试工具(1)
    格式化 SQL 来提高效率
    关于SQL注入,你应该知道的那些事
    jQuery()方法的第二个参数
    JSON简介以及用法代码汇总
    js简单的面试题
    常用meta整理
  • 原文地址:https://www.cnblogs.com/datiangou/p/10408016.html
Copyright © 2020-2023  润新知