【问题标题】:Drag and drop input file [duplicate]拖放输入文件[重复]
【发布时间】:2017-07-09 23:44:45
【问题描述】:

我有一个非常标准的表格来提交图片:

<form enctype="multipart/form-data" class="form-horizontal" role="form" method="POST">
<input id="image" name="image" type="file"/>
</form>

我希望能够将图像拖到一个区域,以便将其选为输入。

我在互联网上研究过如何完成如此简单的任务,但我只得到了使用 AJAX 的过度插件,遗憾的是,这种形式不是一个选项。有人知道怎么做吗?

【问题讨论】:

标签: javascript php html


【解决方案1】:

只需将您的图像拖到输入中即可。如果您需要一些信息如何处理您放置的图像的结果(链接/标题/src 或类似的东西),请访问此site

function handleFileSelect(evt) {
    evt.stopPropagation();
    evt.preventDefault();

    var files = evt.dataTransfer.files; // FileList object.

    // files is a FileList of File objects. List some properties.
    var output = [];
    for (var i = 0, f; f = files[i]; i++) {
      output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
                  f.size, ' bytes, last modified: ',
                  f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
                  '</li>');
    }
    document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
  }

  function handleDragOver(evt) {
    evt.stopPropagation();
    evt.preventDefault();
    evt.dataTransfer.dropEffect = 'copy'; // Explicitly show this is a copy.
  }

  // Setup the dnd listeners.
  var dropZone = document.getElementById('drop_zone');
  dropZone.addEventListener('dragover', handleDragOver, false);
  dropZone.addEventListener('drop', handleFileSelect, false);
.example {
    padding: 10px;
    border: 1px solid #ccc;
}

#drop_zone {
    border: 2px dashed #bbb;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;
    padding: 25px;
    text-align: center;
    font: 20pt bold 'Vollkorn';
    color: #bbb;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="example">
    <div id="drop_zone">Drop files here</div>
    <output id="file_list2"></output>
  </div>
  
  
  <output id="list"></output>
  <br>
  <br>
  <br>

<p> Easy solution </p>
  <div class="intro-text">
    <input class="" type="file" id="file-input" accept="image/*" capture="" name="files[]" multiple="">
  </div>

【讨论】:

  • 我想这就是你要找的东西 =)
猜你喜欢
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2011-12-21
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多