当前位置:首页 > H5 > 正文内容

ajax上传文件,formdata上传文件,ajax上传file文件,原生ajax上传文件,ajax上传图片,ajax上传文件formdata

高老师9年前 (2017-07-09)H51975

通过FormData对象可以组装一组用 XMLHttpRequest发送请求的键/值对。它可以更灵活方便的发送表单数据,因为可以独立于表单使用。如果你把表单的编码类型设置为multipart/form-data ,则通过FormData传输的数据格式和表单通过submit() 方法传输的数据格式相同

前端文件-Jquery版本:

<form id="form" enctype="multipart/form-data" method="post">
    <input type="text" name="desc" placeholder="文件名称"/><br/>
    <input type="file" name="file" placeholder="文件"/>
    <input type="button" id="submit" value="文件上传"/>
</form>
<script>
    $('#submit').click(function () {

       //Jquery对象转换为dom对象
        var $form = $('#form');
        var domForm = $form['0'];

        //构建formData对象
        var formData = new FormData(domForm);
        formData.append('diycontent','我是自定义数据');

        //异步上传文件
      $.ajax({
         url : 'file.php',
         type : 'POST',
         data : formData,
         // 告诉jQuery不要去处理发送的数据
         processData : false,
         // 告诉jQuery不要去设置Content-Type请求头, jquery 会自动设置为multipart/form-data
         contentType : false,
         beforeSend:function(){
            console.log('开始上传咯');
         },
         success : function(response) {
                console.log(response)
         },
         error : function(response) {
                console.log(response)
         }
      });

   });
</script>

前端文件-原生Javacript版本:

<form enctype="multipart/form-data"  method="post" onsubmit="return upload()">
    <input type="text" name="desc" placeholder="文件名称" /><br />
    <input type="file" name="file" placeholder="文件" />
    <input type="submit" value="文件上传" />
</form>
<script type="text/javascript">
    var    upload=function(){

        //获取表单对象
        form=document.forms[0];

        //构建formData对象
        formdata=new FormData(form);
        formdata.append('diycontent','我是自定义数据');

        //Ajax异步上传
        var httper=new XMLHttpRequest();
        httper.open('POST','file.php');
        httper.onload=function(oEvent){
            if(httper.status==200){
                console.log('success');
                console.log(httper.responseText);
            }
            else{
                console.log('error');
            }
        }
        httper.send(formdata);

        return  false;
    }
</script>

后端文件-PHP版本:

<?php
//文件上传
if(move_uploaded_file($_FILES['file']['tmp_name'], $_FILES["file"]["name"])){
    
    //记录日志
    $str='文件名:'.$_FILES['file']['tmp_name'].'--文件介绍:'.$_POST['desc'].'--Formdata追加的字段值:'.$_POST['diycontent'];
    
    file_put_contents('log/'.time().'.txt',$str);
    
    //让前端控制台输出看
    echo $str;
}

附件下载:

                learn.rar

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/253.html

分享给朋友:

“ajax上传文件,formdata上传文件,ajax上传file文件,原生ajax上传文件,ajax上传图片,ajax上传文件formdata” 的相关文章

Javascript封装的原生Ajax请求

Javascript封装的原生Ajax请求

由于工作需要长期使用Ajax,一个页面重复的AJAX请求太多,于是封装起来,只需要编写回调函数/* ------------- 使用方法: 1.ajaxrequest()函数执行准备的参数(1.请求地址2.发送数据字符串拼接3.type值可选get/post4.回调函数名称)   exam...

Javascript事件冒泡和捕捉

Javascript事件冒泡和捕捉

捕捉模式从DOM最顶层一直到最后一层,冒泡正好相反,具体运行以下实例测试.<!DOCTYPE html> <html> <head> <title>捕捉和冒泡</title> <meta charset="...

 js图片旋转插件jqueryrotate

js图片旋转插件jqueryrotate

jQuery 插件——jqueryrotate,它可以实现旋转效果。jqueryrotate 支持所有主流浏览器,包括 IE6。如果提示方法不存在,可能是你的Jquery版本过低或者过高。基本语法:$('#img').rotate(90);//旋转90度其他的参数:参数类型说明默认值...

高效服务器发送事件,服务器发送事件,服务器发送事件和长轮询的区别

高效服务器发送事件,服务器发送事件,服务器发送事件和长轮询的区别

HTML5 服务器发送事件(server-sent event)允许网页获得来自服务器的更新。通过官网的介绍可以看出是接收服务器发送数据,千万不能和ajax混淆,网上大片博文的介绍对其解读是错误的,导致让我差点觉得这个事件很鸡肋。先看通用案例:html5:<script type=&...

setTimeout在循环执行顺序的思考

setTimeout在循环执行顺序的思考

朋友面试时候遇到的问题,我天真的认为会输出0,1,2,但是实际一直只输出2,2,2。通过了解才执行Js自身是单线程的环境,for循环本身是同步代码,setTimeout是异步代码。单线程的语言不能同时做2件事情,必须做出选择。于是Js引擎决定了当我执行完成同步的代码,再去执行异步的代码。当执行异步的...