使用Vant搭建的H5页面移动端无法上传图片问题

这篇具有很好参考价值的文章主要介绍了使用Vant搭建的H5页面移动端无法上传图片问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

<div class="van-cell van-field">
    <div class="van-cell__title van-field__label">头像:</div>
    <div class="van-cell__value van-field__value">
       <div class="van-field__body">
       <van-uploader
       v-model="fileList"
       :max-count="1"
       :after-read="afterRead"
       multiple
       >
       <van-image width="100" height="100" :src="this.path + avatarOn" />
      </van-uploader>
    </div>
  </div>
</div>

具体的原因是因为在van-uploader组件中加了一个属性multiple所导致的,这里我们可以去看一下Vant的官网给出了答案如下图:

使用Vant搭建的H5页面移动端无法上传图片问题

第一个是accept你需要去做相应的文件处理,如果你加了不去处理也会导致出现移动端上传图片失败,

第二个是multiple 官方文档上给出了详细解释,我使用安卓手机是上传失败的,苹果手机去试了试是可以的,所以大致的原因就是这两点。

还有一部分代码可以参考

data() {
    return {
      fileList: [], //头像上传文件数据
      avatarOn: "", //头像回显字段
    };
  },
//图片上传
afterRead(file) {
  //此时可以自行将文件上传至服务器
  const loading = Toast.loading({
  forbidClick: true,
  text: "上传中,请稍候...",
  });
  // 创建Canvas对象(画布)
  let canvas = document.createElement("canvas");
  // 获取对应的CanvasRenderingContext2D对象(画笔)
  let context = canvas.getContext("2d");
  // 创建新的图片对象
  let img = new Image();
  // 指定图片的DataURL(图片的base64编码数据)
      img.src = file.content;
      // 监听浏览器加载图片完成,然后进行进行绘制
      img.onload = () => {
        var newWidth = img.width * 0.7; //压缩后图片的宽度
        var newHeight = img.height * 0.7; //压缩后图片的高度
        // 指定canvas画布大小,该大小为最后生成图片的大小
        canvas.width = newWidth;
        canvas.height = newHeight;
        /* drawImage画布绘制的方法。(0,0)表示以Canvas画布左上角为起点,400,300是将图片按给定的像素进行缩小。
        如果不指定缩小的像素图片将以图片原始大小进行绘制,图片像素如果大于画布将会从左上角开始按画布大小部分绘制图片,最后的图片就是张局部图。*/
        context.drawImage(img, 0, 0, newWidth, newHeight);
        // 将绘制完成的图片重新转化为base64编码,file.file.type为图片类型,0.92为默认压缩质量
        file.content = canvas.toDataURL(file.file.type, 0.7);
        //调用后端上传接口
        uploadAccountApi(file)
          .then((res) => {
            this.userForm.avatar = res.fileName;//可以把上传到服务器的图片值给了你所要保存的Form表单中的头像字段可以实现保存头像
          })
          .finally(() => {
            loading.close();
          });
      };
    },

 文章来源地址https://www.toymoban.com/news/detail-650535.html

到了这里,关于使用Vant搭建的H5页面移动端无法上传图片问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vant Uploader 上传图片功能

    限制上传数量 通过 max-count 属性可以限制上传文件的数量,上传数量达到限制后,会自动隐藏上传区域。 限制上传大小 通过 max-size 属性可以限制上传文件的大小,超过大小的文件会被自动过滤,文件信息通过 oversize 事件获取。 文件上传前进行校验和处理 通过before-read 传入

    2024年02月16日
    浏览(44)
  • vue3 vant上传图片

    在 Vue 3 中使用 Vant 组件库进行图片上传,您可以使用 Vant 的 ImageUploader 组件。ImageUploader 是 Vant 提供的图片上传组件,可以方便地实现图片上传功能。 以下是一个简单的示例,演示如何在 Vue 3 中使用 Vant 的 ImageUploader 组件进行图片上传:   首先,确保您已经安装并配置了

    2024年02月15日
    浏览(38)
  • 【PHP】问题已解决:宝塔面板搭建php网站无法上传图片或是文件(保姆级图文)

    『PHP』分享PHP环境配置到项目实战个人学习笔记。 欢迎关注 『PHP』 系列,持续更新中 欢迎关注 『PHP』 系列,持续更新中 宝塔面板搭建php网站无法上传图片或是文件。 检查你的php里是否安装了 fileinfo 扩展,这会影响文件上传,而且因为宝塔面板让你有多个版本的php,所以

    2024年02月07日
    浏览(61)
  • uniapp使用webview将页面转换成图片支持h5、app、小程序

    在uniapp项目中新建主页和webview页面 index.vue代码 webview代码 实现效果

    2024年02月05日
    浏览(55)
  • 小程序上传图片+Vant(可一次传多张图片)

    需求:小程序端上传图片,可一次传多张照片、预览、删除。 问题 :vant写的对我这种没有基础的人来说,确实有点头疼,参考了这篇参考链接,然后根据需求改了改。 实现结果: 代码 : wxml: js: 后端部分,请根据自己后端接口修改 js:

    2024年02月12日
    浏览(36)
  • Vue3前端h5移动端页面预览PDF使用pdfjs-dist,添加自定义文本水印

    pnpm i pdfjs-dist@2.5.207

    2024年01月18日
    浏览(77)
  • H5项目中使用微信JS-SDK(以H5项目批量上传图片为例,兼容IOS及安卓)

    H5项目中使用微信图片上传相关sdk,主要用于解决 1.安卓手机无法一次选择多张图片进行上传问题;2.控制IOS系统手机一次可无限量选择图片上传的问题 一、准备工作:公众号配置 验证所需使用的sdk是否符合需求 可在使用场景中,打开微信官方提供的 微信SDKDemo 链接,或企业

    2024年02月07日
    浏览(51)
  • vue3+vant+cropper.js实现移动端图片裁剪功能

    最近做项目中遇到一个需求,需要对海报图片按照一定的比例进行裁剪并上传到oss。一开始这个需求思路有两个,使用canvas原生或者寻找现成的第三方库,对比了一番觉得canvas实现时间耗费较长,且秉承着不重复造轮子的原则(其实是菜)。 在进行技术调研后,决定使用vu

    2024年02月01日
    浏览(45)
  • 小程序-封装 @vant/weapp上传图片及视频预览组件

    项目中用到了上传图片的业务,为此进行了封装 i-uploader 和 i-uploader-video 组件。 index.js : index.scss : index.json : index.wxml : 使用: page.wxml : index.js : index.json : index.scss : index.wxml : 使用: page.wxml :

    2024年02月12日
    浏览(39)
  • 移动端H5页面的缓存问题

    一、前端页面缓存问题 前端页面缓存问题是指页面的静态资源(如图片、JS 和 CSS 文件)在浏览器中被缓存后,导致页面不能正确地更新或者加载最新的内容。 为了解决这个问题,我们可以采用一些缓存控制策略来解决。 使用 HTTP 缓存头控制缓存: 可以使用 HTTP 头中的 \\\"Cac

    2024年02月12日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包