2017-12-04 6 views
0

여기 내 코드입니다 : 내가 용기를 클릭하면이미지를 끌어다 놓기로 업로드하는 방법은 무엇입니까?

$(".modal-dropzone-img").click(function() { 
    $(this).siblings(".upload_image").trigger("click"); 
}) 

$('.upload_image').on('change', function() { 
    var files = $(this)[0].files; 
    processFileUpload(files, $(this).closest('form')); 
    return false; 
}); 

$('.modal-dropzone-img').on('drop dragdrop', function (e) { 
    var files = e.originalEvent.dataTransfer.files; 
    processFileUpload(files, $(this).closest('form')); 
    return false; 
}); 

function processFileUpload(droppedFiles, frm) { 
    var uploadFormData = new FormData(frm[0]); 
    uploadFormData.append("file", droppedFiles); 
    console.log(droppedFiles); 

    $.ajax({ 
     url: base_url + frm.attr('action'), 
     type: frm.attr('method'), 
     data: uploadFormData, 
     cache: false, 
     contentType: false, 
     processData: false, 
     success: function (arr) { 
      // File Uploaded 
     } 
    }); 
} 

내 코드뿐만 아니라 작동하지만 나는 용기에 이미지를 드래그하고 거기를 떠날 때 작동하지 않습니다. 뭐가 문제 야?

console.log(droppedFiles);의 결과가이 도움이 두 경우 모두 (클릭, 드래그 앤 드롭)

답변

0

(function(window) { 
 
    function triggerCallback(e, callback) { 
 
     if(!callback || typeof callback !== 'function') { 
 
     return; 
 
     } 
 
     var files; 
 
     if(e.dataTransfer) { 
 
     files = e.dataTransfer.files; 
 
     } else if(e.target) { 
 
     files = e.target.files; 
 
     } 
 
     callback.call(null, files); 
 
    } 
 
    function makeDroppable(ele, callback) { 
 
     var input = document.createElement('input'); 
 
     input.setAttribute('type', 'file'); 
 
     input.setAttribute('multiple', true); 
 
     input.style.display = 'none'; 
 
     input.addEventListener('change', function(e) { 
 
     triggerCallback(e, callback); 
 
     }); 
 
     ele.appendChild(input); 
 
     
 
     ele.addEventListener('dragover', function(e) { 
 
     e.preventDefault(); 
 
     e.stopPropagation(); 
 
     ele.classList.add('dragover'); 
 
     }); 
 

 
     ele.addEventListener('dragleave', function(e) { 
 
     e.preventDefault(); 
 
     e.stopPropagation(); 
 
     ele.classList.remove('dragover'); 
 
     }); 
 

 
     ele.addEventListener('drop', function(e) { 
 
     e.preventDefault(); 
 
     e.stopPropagation(); 
 
     ele.classList.remove('dragover'); 
 
     triggerCallback(e, callback); 
 
     }); 
 
     
 
     ele.addEventListener('click', function() { 
 
     input.value = null; 
 
     input.click(); 
 
     }); 
 
    } 
 
    window.makeDroppable = makeDroppable; 
 
    })(this); 
 
    (function(window) { 
 
    makeDroppable(window.document.querySelector('.demo-droppable'), function(files) { 
 
    
 
     var output = document.querySelector('.output'); 
 
     output.innerHTML = ''; 
 
     for(var i=0; i<files.length; i++) { 
 
     if(files[i].type.indexOf('image/') === 0) { 
 
      output.innerHTML += '<img width="200" src="' + URL.createObjectURL(files[i]) + '" />'; 
 
     } 
 
     output.innerHTML += '<p>'+files[i].name+'</p>'; 
 
     } 
 
    }); 
 
    })(this);
.demo-droppable { 
 
    background: #08c; 
 
    color: #fff; 
 
    padding: 100px 0; 
 
    text-align: center; 
 
    } 
 
    .demo-droppable.dragover { 
 
    background: #00CC71; 
 
    }
<div class="demo-droppable"> 
 
    <p>Drag files here or click to upload</p> 
 
</div> 
 
<div class="output"></div>

희망에 대한 좋은 동일한 것 같다 지적했다.

관련 문제