如何把前端用ajax发过来的图片传到node上,并且用node保存在oss图片服务器上?
一:只上传一张图片
1.1:node需要安装的插件,先安好
npm install ali-oss uuid co --save
A、ali-oss
用途:aliyun OSS(Object Storage Service) js client for Node and Browser env;
文档地址:https://www.npmjs.com/package/ali-oss
B、co
用途:处理Generator 函数的插件返回promise
文档地址:https://www.npmjs.com/package/co
C、uuid:
用途:是简单,快速生成RFC4122 UUIDS的插件;
文档地址:https://www.npmjs.com/package/uuid;
1.2:前端上传代码
A、 html代码是用的weui的弹框,里面加了weui的upload样式,自己再用css改了一下,代码如下
<div id="dialog_upload" class="out_myDialog" style="display: none;"> <div class="weui-mask"></div> <div class="weui-dialog"> <div class="weui-dialog__hd"> <strong class="weui-dialog__title"> select the picture to upload! </strong> </div> <div class="weui-dialog__bd" id="ld-dialog__bd"> <div class="weui-uploader__input-box"> <img class="uploadImg" src="" alt=""> <input id="uploaderInput" class="weui-uploader__input" type="file" accept="image/*"> </div> </div> <div class="weui-dialog__ft"> <a href="javascript:;" class="weui-dialog__btn weui-dialog__btn_default cart_cancle">Cancle</a> <a href="javascript:;" class="weui-dialog__btn weui-dialog__btn_primary confirm_delect">Confirm</a> </div> </div> </div>
B、 css改动这里不涉及,自己写吧
C、 前端样式如下
D、 js实现展示图片和保存图片到formdata里面,代码如下:
//点击file类型的input的事件 $("#uploaderInput").on("change",function(){ var files = $(this).prop('files'); //获取图片的文件 if(files.length>0){ hasImg = true; var windowURL = window.URL || window.webkitURL; var src=windowURL.createObjectURL(files[0]);//建临时路径 $(".uploadImg").attr({src:src}) //把选的图片展示出来 // console.log(files[0]); headImgFordata = new FormData(); headImgFordata.append('avatar', files[0]); //文件保存在formdata里面,便于提交到后台 }else{ hasImg = false; headImgFordata = null; } })