账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    input type="file"上传图片回滚
    21
    0

    vue实现一个类似头像上传的功能,利用input type="file"实现,作用大概就是本地选择图片然后上传到服务器,上传失败回滚到之前的样子
    html:

    <form action="" enctype="multipart/form-data" method="post" name="form1" id="form1">
           文件:<input type="file" name="myFile" id="myFile" @change="getFileContent();">
    </form>
        
    <!-- 图片展示区域 -->
    <div id="imgList" style="width: 100px;height:100px;">
        <img src="123.jpg" alt="" style="width:100%;height: 100%;">
    </div>
    
    </div>

    js

     getFileContent(){
       var reader = new FileReader();
       var file = document.querySelector("#myFile").files;
       reader.readAsDataURL(file[0]);
    
       reader.onload = function(){
           let oimg = document.querySelector("img")
           oimg.src = reader.result;
           this.axios.post('xxx',{
                img:reader.result;
           })
           .then{...}
           .catch{
                // reset
                oimg.src = '123.jpg'
           }
       }
       
     }

    因为file这个对象是只读属性,所以不能修改
    求大神怎么办?或者有没有更好的方法

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 鲸落星夜子 普通会员 1楼

      在JavaScript中,你可以使用onchange事件来处理文件上传的事件。如果你想要在上传完成后回滚,你可以使用onsubmit事件。以下是一个简单的例子:

      ```javascript // 获取文件元素 var fileInput = document.getElementById('myFileInput');

      // 获取文件输入事件的监听器 var fileInputEvent = fileInput.addEventListener('change', function(event) { // 获取文件名 var fileName = event.target.files[0].name;

      // 上传文件到服务器
      // ...
      
      // 如果上传成功,回滚上传
      if (file.name === 'myFile') {
          fileInput.value = '';
      }
      

      }); ```

      在这个例子中,当用户选择一个文件后,它将被发送到服务器。如果服务器成功地将文件上传到服务器,它将删除用户选择的文件,这样用户就不会再次选择文件。如果上传失败,文件将被回滚,用户将无法再次选择文件。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部