为了账号安全,请及时绑定邮箱和手机立即绑定

本地图片上传服务器转base64

本地图片上传服务器转base64

肥皂起泡泡 2019-03-13 17:15:25
本地选择图片然后通过ajax上传服务器,不想用form表单,用h5的fileReader报错,怎么解决转换的代码convertToBase64() {    let fileReader = new FileReader()    //最大上传2m的图片    const AllowImgFileSize = 2100000    let imgUrlBase64;    imgUrlBase64 = fileReader.readAsDataURL('https://img.alicdn.com/bao/uploaded/TB1qimQIpXXXXXbXFXXSutbFXXX.jpg')    fileReader.onloadend = function() {      if (AllowImgFileSize != 0 && AllowImgFileSize < fileReader.result.length) {        alert( '上传失败,请上传不大于2M的图片!')        return      }else{        console.log(imgUrlBase64)        //执行上传操作        console.log(fileReader.result);      }    }  }现在是传死了一个在线的图片地址,实际是input(type=file)获取到的值传这两种值都报错真的不知道怎么解决,第一次用fileReader。这个是最简单的,还有没有别的简单可行的方法。用的是react框架
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

本地选择图片然后通过ajax上传服务器,不想用form表单

上传图片还真的只能用multipart/form-data,就是你所说的form表单。因为其他body通常收长度限制,你想用base64发必须让后台支持你的长度,而如果在同时被body足够长的报文攻击直接GG。

事实上你在input=file选中文件返回的就是File,通过FormData接口用ajax传上去就好了,而其他方式你根本获取不了本地图片,你的例子是想通过远程图片服务器1去上传到远程图片服务器2么?如果你真是要做这件事倒可以转成blob再按前面说的方式上传。(奇怪的需求)


查看完整回答
反对 回复 2019-04-14
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

readAsDataURL()的参数不是一个字符串的url吧,应该是一个blob或者file对象。个人感觉应该用xhr先获取到真正的图片文件


查看完整回答
反对 回复 2019-04-14
?
繁星coding

TA贡献1797条经验 获得超4个赞

你读取本地文件怎么会拿到一个服务器的文件路径呢? fileReader基于Blob实现,只能读取Blob://类型的文件, 用户选择完本地文件你拿到的也是Blob类型. 你这里的问题就是路径的问题


查看完整回答
反对 回复 2019-04-14
  • 3 回答
  • 0 关注
  • 590 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信