2017-02-20 2 views
2

У меня есть довольно стандартная форма, чтобы отправить изображение:Перетащите входной файл

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

Я хочу, чтобы иметь возможность перетащить изображение в области, так что будет выбрана в качестве входных данных.

Я исследовал в Интернете, как сделать такую ​​простую задачу, но я только переусердствую плагины, которые используют AJAX, который, к сожалению, не является вариантом для этой формы. Кто-нибудь знает, как это сделать?

+0

Это было отвечено довольно подробно здесь. Единственное, что вам понадобится, это выглядит как jquery, no ajax: http://stackoverflow.com/a/12713396/1836515 – Triclops200

+1

Существует много хороших librairies, поэтому я использую [dropzoneJS] (http: //www.dropzonejs.com/), который довольно крут, вы должны это проверить. – Nicolas

+0

См. Этот ответ, проверенный и работающий: http://stackoverflow.com/a/24470646/6826238 – wpcoder

ответ

2

просто перетащите изображение на вход. если вам нужна какая-то информация о том, как работать с результатом (ссылка/название/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>

+0

Я думаю, что это то, что вы ищете =) – MKAD

Смежные вопросы