【问题标题】:file upload browser in thumbnail view缩略图视图中的文件上传浏览器
【发布时间】:2014-04-20 14:56:02
【问题描述】:

我正在尝试编写一段代码,允许用户打开文件浏览器并选择要上传到站点的文件。有没有办法确保文件浏览器始终以缩略图视图打开?在 Windows 中,该视图与上次使用的视图相同。

<form action="demo_form.asp">
  Select a file: <input type="file" name="img">
  <input type="submit">
</form>

我看到在 Facebook 中,无论上次使用的是什么视图,它总是以缩略图的形式打开,那么它是如何完成的?

【问题讨论】:

    标签: html facebook file-upload browser web


    【解决方案1】:

    此代码使用 HTML5 功能,可能不适用于旧浏览器。

    HTML:

    <input type="file" style="display:none" id="upload-image" multiple="multiple"></input>
     <div id="upload" class="drop-area">
       Upload File
     </div>
     <div id="thumbnail"></div>
    

    CSS:

    .drop-area{
    width:100px;
    height:25px;
    border: 1px solid #999;
    text-align: center;
    padding:10px;
    cursor:pointer;
    }
    
    #thumbnail img{
    width:100px;
    height:100px;
    margin:5px;
    }
    
    canvas{
    border:1px solid red;
    }
    

    jQuery:

    jQuery(function($){
    var fileDiv = document.getElementById("upload");
    var fileInput = document.getElementById("upload-image");
    console.log(fileInput);
    fileInput.addEventListener("change",function(e){
    var files = this.files
    showThumbnail(files)
    },false)
    
    fileDiv.addEventListener("click",function(e){
     $(fileInput).show().focus().click().hide();
     e.preventDefault();
     },false)
    
    fileDiv.addEventListener("dragenter",function(e){
     e.stopPropagation();
     e.preventDefault();
     },false);
    
    fileDiv.addEventListener("dragover",function(e){
    e.stopPropagation();
    e.preventDefault();
    },false);
    
    fileDiv.addEventListener("drop",function(e){
    e.stopPropagation();
    e.preventDefault();
    
    var dt = e.dataTransfer;
    var files = dt.files;
    
    showThumbnail(files)
    },false);
    
    function showThumbnail(files){
     for(var i=0;i<files.length;i++){
      var file = files[i]
      var imageType = /image.*/
      if(!file.type.match(imageType)){
       console.log("Not an Image");
       continue;
     }
    
    var image = document.createElement("img");
    // image.classList.add("")
    var thumbnail = document.getElementById("thumbnail");
    image.file = file;
    thumbnail.appendChild(image)
    
    var reader = new FileReader()
    reader.onload = (function(aImg){
      return function(e){
        aImg.src = e.target.result;
      };
    }(image))
    var ret = reader.readAsDataURL(file);
    var canvas = document.createElement("canvas");
    ctx = canvas.getContext("2d");
    image.onload= function(){
      ctx.drawImage(image,100,100)
    }}}});
    

    【讨论】:

    • 如果我做对了,您的代码会在上传后生成缩略图。我正在寻找的是始终在缩略图视图中打开文件选择,无论用户使用的最后一个视图如何。就像在 FB 中所做的一样。
    猜你喜欢
    • 1970-01-01
    • 2016-12-17
    • 2019-01-06
    • 2012-02-25
    • 2012-06-13
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    相关资源
    最近更新 更多