帝王谷资源网 Design By www.wdxyy.com
这次分享一个简易的上传头像示例,其大致流程为:
一、将选择的图片转为base64字符串
function preview(file) {//预览图片得到图片base64 var prevDiv = document.getElementById('preview'); if (file.files && file.files[0]) { var reader = new FileReader(); reader.onload = function(evt){ prevDiv.innerHTML = '<img src="/UploadFiles/2021-04-02/' + evt.target.result + '">上面的方法可将选择的图片转为base64预览,此时可以打桩看看base64到底是什么东东。
二、根据(阿里云)上传要求,对该图像base64去头等处理
var binaryblob = function (s, type) {//blob对象 var byteString = atob(s); var array = []; for (var i = 0; i < byteString.length; i++) { array.push(byteString.charCodeAt(i)); } return new Blob([new Int8Array(array)], {type: type}); }; var binaryPictureBlob = function (dataUrl, filterHead) {//上传base64去头 var s = filterHead "") : dataUrl; return binaryblob(s, "image/jpeg"); };此时将base64去头等处理后返回一个blob对象用于上传阿里云。以上方法最好写在service、factory里,以后有图像上传需求时方便直接调用,尽量不要写在controller内。
三、第一次请求
$scope.save=function(){//保存 var pic=binaryPictureBlob($('#preview img').attr('src'),true);//调用该方法得到上传数据 console.log(pic); $http({//接口参数 url:'', method:'', headers:{}, data:{} }).success(function(data){ console.log(data); //这里讲进行第二次请求 }).error(function(err1,header1,config1,status1){//处理响应失败 console.log(err1,header1,config1,status1); }) }点击保存按钮后第一次请求是上传到本地服务器,实际是上传一些该图像的标记等信息。上传成功后会返回一个该图像对应的阿里云地址和一个阿里云上传图像的地址,此时该图像地址暂不可用。
四、第二次请求
$http({ method:'PUT', url:data.UrlForPut, headers: { 'Content-Type':' ', }, data:pic//图像base64字符串去头等处理后的图片信息blob }).success(function(data2){ $scope.imgSrc=data.Url;//将服务器的数据的url赋值图片链接 }).error(function(err2,header2,config2,status2){//处理响应失败 console.log(err2,header2,config2,status2); });注意:
此时请求的url是第一次请求返回的一个固定地址(我这里是--data.UrlForPut)。
头部信息处避免阿里云上传时报错写成'Content-Type':' '或者根据阿里云要求上传header。
第二次请求成功后图片的地址是第一次返回的该图像的地址(此处是个大坑,data.Url不要写成data2.Url了)。
五、此时应该都ok了,好好欣赏靓照吧!
最后附上完整代码,望指教!
友情提示:在复制代码测试时请求参数自己加上哦!
<!DOCTYPE html> <html ng-app="webPhotos"> <head lang="zh-CN"> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <title>photos</title> <style> div{text-align:center;border:1px solid #ddd;} button,div{margin:10px auto} button{border:0;width:200px;height:30px;line-height:30px;font-size:1pc;color:#333;background-color:#0ff;cursor:pointer;border-radius:5px} button:hover{background-color:#db7093} #preview,.show-img{width:200px;height:200px;} #preview img,.show-img img{width:100%;height:100%;} .file{position:relative;display:block;width:200px;height:30px;line-height:30px;background:#9acd32;border-radius:5px;margin:10px auto;overflow:hidden;color:#1e88c7;text-decoration:none;text-indent:0} .file input{position:absolute;font-size:75pt;right:0;top:0;opacity:0} .file:hover{background:#aadffd;border-color:#78c3f3;color:#004974;text-decoration:none} </style> </head> <body> <div ng-controller="photos"> <a href="javascript:;" class="file"> <span>选择文件</span> <input type="file" onchange="preview(this)" /> </a> <button class="save" ng-click="save()">保存</button> <h2>头像预览</h2> <div id="preview"></div> <h2>上传成功后展示头像</h2> <div class="show-img"> <img ng-src={{imgSrc}} alt=""/> </div> </div> <script type="text/javascript" src="/UploadFiles/2021-04-02/jquery.min.js">更多精彩内容请参考专题《ajax上传技术汇总》,《javascript文件上传操作汇总》和《jQuery上传操作汇总》进行学习。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
js,upload,上传头像
帝王谷资源网 Design By www.wdxyy.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
帝王谷资源网 Design By www.wdxyy.com
暂无评论...
更新日志
2024年10月25日
2024年10月25日
- 群星2013-青春缤纷辑压箱宝大公开3CD2[新加坡限量版][WAV整轨]
- 林育群.2013-BalladShow(日本版)【环球】【WAV+CUE】
- 陈加洛.1992-痛到感觉不到【宝丽金】【WAV+CUE】
- 群星.2023-宿命之敌电视剧原声带【韶愔音乐】【FLAC分轨】
- 東京事変-大発見[FLAC+CUE]
- 椎名林檎-三文ゴシップ[FLAC+CUE]
- 2024年08月04日
- 裘德《裘德「最后的水族馆」演唱会LIVE》[320K/MP3][228.89MB]
- 裘德《裘德「最后的水族馆」演唱会LIVE》[24bit 48kHz][FLAC/分轨][2.08G]
- 基因三重奏《如果你什么都不说 音乐会现场录音》[320K/MP3][145.37MB]
- 孟庭苇.1996-月亮说话(2020环球24KGOLD限量版)【上华】【WAV+CUE】
- 群星.1997-新艺宝优质音响系列·国语精选监听版【新艺宝】【WAV+CUE】
- 阿桑.2005-寂寞在唱歌(星外星引进版)【华研国际】【WAV+CUE】
- 基因三重奏《如果你什么都不说 音乐会现场录音》[FLAC/分轨][287.43MB]
- 蔡题谦《我爱你,却依然要看你走》[320K/MP3][88.65MB]