• input标签前台实现文件上传


    值得注意的是:当一个表单里面包含这个上传元素的时候,表单的enctype必须指定为multipart/form-data,method必须指定为post,浏览器才会认识并正确执行。但是还有一点,浏览器只允许用户点击<input type="file">来选择本地文件,用JavaScript对<input type="file">的value赋值是没有任何效果的。当用户选择了上传某个文件后,JavaScript也无法获得该文件的真实路径:
    但是有个方法可以,利用File和FileReader两个主要对象,可以获得文件信息并读取文件。
    例子文件:file-upload-demo.html

    HTML文件

    复制代码
    <form method="post" enctype="multipart/form-data" id="file_upload">
      <p>图片预览:</p>
      <div id="test-image-preview"></div>
      <p>
        <input type="file" id="test-image-file" name="test" accept="image/gif, image/jpeg, image/png, image/jpg">
      </p>
    <p id="test-file-info"></p>
    </form>
    复制代码

    CSS

    复制代码
    #test-image-preview {
      border: 1px solid #ccc; width: 100%;
    height
    : 200px;
    background-size
    : contain;
    background-repeat
    : no-repeat;
    background-position
    : center center;
    }
    复制代码

    JS

    复制代码
    <script src="http://cdn.loveqiao.com/jquery.js"></script>
    <script type="text/javascript">
      var
        fileInput = document.getElementById('test-image-file'),
    info
    = document.getElementById('test-file-info'),
    preview
    = document.getElementById('test-image-preview');
    // 监听change事件:
    fileInput.addEventListener('change', function() {
      
    // 清除背景图片:
    preview.style.backgroundImage = '';
    // 检查文件是否选择:
    if(!fileInput.value) {
    info.innerHTML
    = '没有选择文件';
    return;
    }
    // 获取File引用:
    var file = fileInput.files[0];
    //判断文件大小
    var size = file.size;
    if(size >= 1*1024*1024){
    alert(
    '文件大于1兆不行!');
    return false;
    }
    // 获取File信息:
    info.innerHTML = '文件: ' + file.name + '<br>' +
    '大小: ' + file.size + '<br>' +
    '修改: ' + file.lastModifiedDate;
    if(file.type !== 'image/jpeg' && file.type !== 'image/png' && file.type !== 'image/gif') {
    alert(
    '不是有效的图片文件!');
    return;

          </span><span style="color: #008000">//</span><span style="color: #008000"> 读取文件:</span></br>
          <span style="color: #0000ff">var</span> reader = <span style="color: #0000ff">new</span><span style="color: #000000"> FileReader();</br>
                reader.onload </span>= <span style="color: #0000ff">function</span><span style="color: #000000">(e) {</br>
                  </span><span style="color: #0000ff">var</span><span style="color: #000000"></br>
                       data </span>= e.target.result; <span style="color: #008000">//</span><span style="color: #008000"> 'data:image/jpeg;base64,/9j/4AAQSk...(base64编码)...}'            </span></br>
                       preview.style.backgroundImage = 'url(' + data + ')'<span style="color: #000000">;</br>
               };</br>
                </span><span style="color: #008000">//</span><span style="color: #008000"> 以DataURL的形式读取文件:</span></br>
    

    reader.readAsDataURL(file);

    console.log(file);

    });

    </script>

    复制代码
  • 相关阅读:
    学习Mybatis与mysql数据库的示例笔记
    SpringAOP学习笔记
    idea开发ssh(Spring+struts+Hibernate)实现对MySQL数据库的增删改查
    springmvc加vue实现前后端数据的跨域访问
    idea开发工具springmvc加vue.js实现MySQL数据库的查询操作
    利用idea开发工具实现ssh(spring+struts+hibernate)加vue.js前后台对数据库的查询
    appweb 7.0.2版本编译
    Unable to register the DLL/OCX: RegSvr32 failed with exit code 0x3 我的解决方法
    无法定位程序输入点 InitializeCriticalSectionEx 于动态链接库 Kernel32.dll 上 问题解决方法
    海思3516D + IMX291图像闪烁问题定位
  • 原文地址:https://www.cnblogs.com/jpfss/p/8944403.html
Copyright © 2020-2023  润新知