• 如何获取input,file里的文件,实现预览效果,并传给后端?


    单纯的事件与获取

    <input type="file" name="file" id="fileUpload">
    <img id="preview" src=""/>

    jQuery

    $("#fileUpload").change(function () {
        console.log($("#fileUpload")[0].files);
    });

    原生JavaScript

      var popImg = document.getElementById("fileUpload")   ----------
        popImg.onchange = function() { 
          const file = document.getElementById('fileUpload');  // 获取 input(只是演示可以使用外面的 popImg)
          const fileObj = file.files[0];  // 获取选中的文件信息
          console.log(fileObj)  
          const windowURL = window.URL || window.webkitURL; // 兼容操作
          const img = document.getElementById('preview');  // 获取img元素
          if(file && fileObj) {  // 判断是否为空 null
              const dataURl = windowURL.createObjectURL(fileObj); 
              img.setAttribute('src',dataURl);
          }
        }

    URL.createObjectURL()用法(https://blog.csdn.net/qq_39258552/article/details/84133770)

    ===============

    1.如何实现file上传文件,预览效果

    参考(https://blog.csdn.net/xiaohu12685/article/details/80328022)

    <input id="pop_file" type="file" accept=".jpg,.jpeg,.png" v-on:change="uploadFile($event)" name="fileTrans" ref="file" value="" />
    <img id="preview" src=""/>

    js.

    uploadFile:function(ev){
        var that = this;
        const file = document.getElementById('pop_file');
        const fileObj = file.files[0];
        const windowURL = window.URL || window.webkitURL;
        const img = document.getElementById('preview');
        if(file && fileObj) {
            const dataURl = windowURL.createObjectURL(fileObj);
            img.setAttribute('src',dataURl);
        }
    }

    2.获取到file里的文件,使用异步的请求实现局部刷新的效果

    <form @submit.prevent="addbanner()">
        <input id="pop_file" type="file" accept=".jpg,.jpeg,.png" v-on:change="uploadFile($event)" name="fileTrans" ref="file" value="" />
        <input class="pop_but" type="submit" value="提交"/>
    </form>

    js.

    addbanner: function(ev) {
        var oFiles = document.getElementById("pop_file").files;
        var params = new FormData();
        params.append('file',oFiles[0]);
        axios({
            method: 'post',
            url: 'http://请求路径/admin/BannerApi/actionBannerSave',
            headers: {
                'Content-type': 'application/x-www-form-urlencoded;charset=UTf-8'
            },
            data: params
        })
        .then(function(response) {
            console.log(response)
        })
    }

    如果是ajax请求的话

    var oFiles = document.getElementById("pop_file").files;
    var params = new FormData();
    params.append('file',oFiles[0]);
    $.ajax({
        type:'post',
        url:'http://api.tianshuai.com.cn/admin/BannerApi/actionBannerSave',
        data:params,
        cache: false,
        contentType: false,
        processData: false,
        success:function(data){
            console.log(data)
        }
    })
  • 相关阅读:
    VS调试Libevent流程
    Lua require搜索路径指定方法
    关于“无法定位程序输入点gzdirect于动态链接库zlib1.dll”的问题
    poj 1737 Connected Graph
    迭代器挺好用的
    The Balance of the World Aizu
    Country Road Aizu
    牛客小白月赛4 C 病菌感染
    牛客小白月赛4 A 三角形
    老子的全排列呢
  • 原文地址:https://www.cnblogs.com/PasserByOne/p/12034737.html
Copyright © 2020-2023  润新知