写点什么

作为前端上传图片的两种方法

作者:小学僧
  • 2022 年 3 月 10 日
  • 本文字数:918 字

    阅读完需:约 3 分钟

作为前端上传图片的两种方法

方法一:ajax 用 formData 对象上传

常见的开发需求中,需要用户在本地选择一张图片作为头像,并同时预览。


介绍一下 formData:FormData 对象把数据编译成键值对的形式,用 XMLHttpRequest 来发送数据。


注意: 1.要将编码方式(enctype 属性) 设置成 multipart/form-data

2.不设置内容类型 (contentType: false)

3.不处理数据 (processData: false)


html 代码:

 <input accept="image/*"  type="file" id="uploadIMG"  onchange="btnUploadFile(event)"/>
复制代码

js 代码:

function btnUploadFile(e){ var imgFile = e.target.files[0]; //获取图片文件var formData = new FormData();  // 创建form对象formData.append('file', imgFile);  // 通过append向form对象添加数据formData.append('other', 'other')  // 如果还需要传替他参数的话$.ajax({    url: url, //请求的接口地址    type: 'POST',    cache: false, //上传文件不需要缓存    data: formData,    processData: false, // 不要去处理发送的数据    contentType: false, // 不要去设置Content-Type请求头    success: function(data){            },    error: function(err){        console.log(err)    }}) }
复制代码


方法二:用base64的方法

<input accept="image/*"  type="file" id="uploadIMG"  onchange="btnUploadFile(event)"/><img src="" alt="" id="showIMG">
复制代码


function btnUploadFile(e,type){        //获取图片        var files = e.target.files;        var file = files[0];        // 接受 jpeg, jpg, png 类型的图片        if (!/\/(?:jpeg|jpg|png)/i.test(file.type)){            return;        }        var reader = new FileReader();        reader.onload = function() {             var result = this.result;  //图片base64字符串            $("#showIMG").attr("src",result);  //展示图片        };        reader.readAsDataURL(file);    //Base64    } function (baseIMG){   $.ajax({       url: url,  //上传的地址       type: "post",       data: {"imgsrc": baseIMG},       success: function(data){               }   })}
复制代码


用户头像

小学僧

关注

还未添加个人签名 2022.03.10 加入

还未添加个人简介

评论

发布
暂无评论
作为前端上传图片的两种方法_小学僧_InfoQ写作平台