uniapp生成图片分享,uniapp上传多张图片

  uniapp生成图片分享,uniapp上传多张图片

  本文为大家带来一些关于uniapp的知识,主要包括如何上传图片。下面就来看看怎么做,希望对你有帮助。

  UNI-APP开发(仿饿)开发课程:进入学习

  推荐:《uniapp教程》

  

一、前言

  在应用uni-app开发跨平台的app项目时,上传图片、文档等资源是很常见的:点击相框按钮选择图片上传,点击每张图片预览,点击每张图片删除图标删除对应的图片。基本功能点如下:

  选择本地相册中的图片或通过相机拍照上传图片;您可以预览您选择上传的图片;删除错误或未选中的图片;

二、项目实战

  在研究了uni-app portal之后,官网推荐使用uni.chooseImage(OBJECT)接口从本地相册中选择图片或者用相机拍照。

  对于提到的门户

  大部分照片都是选择上传的。uni ui封装了更完整的uni-file-picker组件,文件被选中上传到uniCloud的免费存储和cdn,实现一站式集成。强烈推荐。

  我不同意。通过实践得知,该接口只能使客户端将图片资源上传到uniCloud的后台服务器,而不支持本地服务器,不符合功能要求,需要谨慎使用。

  项目实施页面的一般逻辑如下,完整的页面实施逻辑可从《Uni-app 实现图片上传、删除、预览、压缩》下载。

  视图渲染

  模板

  视图class=center

  !-上传图片-

  视图class=uploadClass

   view class= img class v-for=(item,I)in imgList :key= I @ click= vieimage(I,img list)

  image style= width:100%;高度:100%;:src=item/image

   view @click.stop=delImg(i,imgList,imgsID) style= display:inline;

  uni-icons type= close empty class= close class size= 20 /uni-icons

  /查看

  /查看

  view v-show= curt otal 3 class= camera class @ tap= upload

  image style= width:48 rpx;高度:38rpxsrc= @/static/app center/zhaoxiang Ji @ 2x . png /image

  /查看

  !-关于图片数量的提示-

  view class= total class { { curt otal } }/3/view

  /视图/模板JS逻辑层-图片上传

  //图片选择上传(){

  var _ self=this

  //图像选择,一次只能选择一张图像。

  uni.chooseImage({

  计数:1,

  大小类型:[原始,压缩],//可以指定是原始图像还是压缩图像。默认情况下,两者都有。

  源类型:[相册,相机],//从相册和相机中选择

  成功:函数(res) {

  console.log(res:,res)

  _ self.curTotal

  _ self . img list . push(RES . tempfile paths[0]);

  const tempfile paths=RES . tempfile paths[0];

  //图像上传

  const upload task=uni . upload file({

  URL: 335822 . 189 . 25 . 91:9988/admin/sys-file/upload ,//发布请求地址

  filePath: tempFilePaths,

  名称:“文件”,//待确认

  标题:{

  “内容类型”:“多部分/形式数据”,

   authorization :getApp(). global data . token Basic YXBwOmFwcA==

  },

  成功:函数(uploadFileRes) {

  console.log(Success:,uploadFileRes);

  _ self . img sid . push(JSON . parse(upload fileres . data). data . fileid);

  console.log(_self.imgsID:,_self.imgsID)

  },

  失败:函数(上传文件失败){

  console.log(Error:,uploadfile fail . data);

  },

  完成:()={

  console . log( Complete:“);

  }

  });

  },

  错误:函数(e){

  console . log(e);

  }

  });}JS逻辑层-图片预览

  /**

  *图片预览

  * @param {Object}我选择的图片索引

  * @param {Object} imgList自包装图片数组

  */viewImage(i,imgList) {

  让imgurl=[]

  img list . foreach(item=imgurl . push(item))

  uni.previewImage({

  URL:imgurl,

  当前:imgList[i]

  });}JS逻辑层-图片删除

  /* *图像删除

  * @param {Object}我删除图片的索引。

  * @param {Object} imgList自包装图片数组

  */delImg(i,imgList,imgsID) {

  uni.showModal({

  标题:“提示”,

  内容:“您确定要删除照片吗?”,

  CancelText:取消,

  确认文本:好,

  成功:res={

  if(res.confirm) {

  imgList.splice(i,1);

  imgsID.splice(i,1);

  this . curt otal-;

  }

  }

  })}}JS逻辑层-图片压缩

  //src:压缩转换原始图片的路径//_this: current this。如果不想传这个,可以把这个函数改成箭头函数。//回调:回调函数。有关详细信息,请选择Image方法函数压缩图像(src,_ this,callback) {

  var dstname=_doc/IMG-(新日期())。valueOf()”。jpg ;//设置压缩图片的路径

  不同宽度、高度、质量;

  宽度= 80% ;

  高度= 80% ;

  质量=80;

  //详见html 5 document==http://www.html5plus.org/doc/zh _ cn/zip . html # plus . zip . compress image。

  plus.zip.compressImage({

  src: src,

  dst: dstname,

  覆盖:真,

  质量:质量,

  宽度:宽度,

  身高:身高},

  功能(事件){

  回调(event.target,dstname,_ this);

  },

  功能(错误){

  返回src

  });}注意:上传前先压缩图片。因为图片压缩时间太长,所以在上传图片之前应该使用await对图片进行压缩,否则会在压缩之前进行上传。

  应用效果如下:拍照或从相册选择图片/上传一张图片上传3张图片/删除图片

  

三、知识点总结

  

3.1 实现原理

  客户端通过uni.chooseImage()方法选择本地相册图片或拍照,获取本地资源的临时文件路径,然后在POST请求中通过uni.uploadFile()方法将本地资源上传到开发者服务器,其中内容类型为multipart/form-data。

  

3.2 注意事项

  图像选择由uni.chooseImage()实现。请谨慎使用uni ui封装的所谓更完善的uni-file-picker组件,该组件选择并上传资源文件到uniCloud和cdn的免费存储。它是一站式集成的,个人无法修改。强烈建议不要用!

  Uni.uploadFile()用于上传图片,上传成功后回调函数返回的uploadFileRes.data为字符串类型。解析对象需要JSON.parse()。

  JSON . parse(uploadfileres . data). data . fileid){

  data: {\code\:0,\msg\:null,\ data \ :{ \ bucket name \ :\ CICC \ ,\ fileName \ :\ 5aa 39d 669224 FFB 869 b 60d 245 b 0751 a . jpg \ ,\ original \ :\ 1644999553865 _ mmexport 1644913914292 . jpg \ ,\url\ :

  statusCode: 200,

  errmsg : UploadFile:OK } uni的参数描述部分的name属性。UploadFile()对象是与要上传的文件相对应的键。开发者可以在服务器端通过这个密钥获取文件的二进制内容,前后端要和这个密钥一致,否则无法请求服务。

  图片预览是通过uni.previewImage()实现的,没有坑。你可以根据自己的需求,按照门户参数来使用。

  推荐:《uniapp学习教程》以上是分析uni-app如何一起上传图片的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: