স্ট্যান্ডার্ড এইচটিএমএল ফাইল ইনপুটগুলিতে ড্রপ ফাইলগুলি টানুন


163

এই দিনগুলিতে আমরা একটি বিশেষ ধারকগুলিতে ফাইলগুলি টেনে আনতে এবং এক্সএইচআর 2 দিয়ে আপলোড করতে পারি Many লাইভ অগ্রগতি বার ইত্যাদির সাথে খুব দুর্দান্ত জিনিস। উদাহরণ এখানে।

তবে কখনও কখনও আমরা এত শীতলতা চাই না। আমি কি চাই ড্র্যাগ এবং ড্রপ ফাইলগুলিতে হয় - একটি সময়ে অনেক - একটি প্রমিত HTML ফাইল ইনপুটে : <input type=file multiple>

এটা কি সম্ভব? ফাইল ড্রপ থেকে সঠিক ফাইলনাম (?) দিয়ে ফাইল ইনপুট 'পূরণ' করার কোনও উপায় আছে কি? (ফাইল সিস্টেম সুরক্ষার কারণে সম্পূর্ণ ফাইলপথগুলি উপলভ্য নয়))

কেন? কারণ আমি একটি সাধারণ ফর্ম জমা দিতে চাই। সমস্ত ব্রাউজার এবং সমস্ত ডিভাইসের জন্য। ইউএক্স উন্নত ও সরল করার জন্য ড্রাগ এবং ড্রপটি কেবল প্রগতিশীল বর্ধন। স্ট্যান্ডার্ড ফাইল ইনপুট (+ multipleবৈশিষ্ট্য) সহ স্ট্যান্ডার্ড ফর্মটি সেখানে থাকবে। আমি এইচটিএমএল 5 বৃদ্ধি করতে চাই।

সম্পাদনা
আমি জানি কিছু ব্রাউজারে আপনি কখনও কখনও (প্রায় সর্বদা) ফাইল ইনপুটটিতে ফাইল ফেলে দিতে পারেন । আমি জানি ক্রোম সাধারণত এটি করে, তবে কখনও কখনও এটি ব্যর্থ হয় এবং তারপরে বর্তমান পৃষ্ঠায় ফাইলটি লোড করে (আপনি যদি কোনও ফর্ম পূরণ করছেন তবে একটি বড় ব্যর্থতা)। আমি বোকা- এবং ব্রাউজারপ্রুফ করতে চাই।


1
আপনি যদি নিজের সামঞ্জস্যের মধ্যে ম্যাক / সাফারি অন্তর্ভুক্ত করতে চান তবে কিছু ব্যথার জন্য প্রস্তুত হন।
শার্ক

1
@ শার্ক 8 আসলে ইতিমধ্যে সমর্থন করা কয়েকটি ব্রাউজারগুলির মধ্যে সাফারি / ম্যাক অন্যতম।
রিকার্ডো তোমাসি

আসলে, ব্রাউজারগুলির কোনও এটি সমর্থন করে না। ফাইল ইনপুট ক্ষেত্রটি কেবল পঠনযোগ্য (সুরক্ষার জন্য) এবং এটিই সমস্যা। বোকা সুরক্ষা!
রুডি

2
দ্বারা এই আমি "- একটি সময়ে অনেক - একটি মান HTML ফাইল ইনপুটে ড্র্যাগ এবং ড্রপ ফাইল" বোঝানো।
রিকার্ডো তোমাসি

3
input type="file" multipleসাফারিতে সূক্ষ্মভাবে কাজ করতে একাধিক ফাইল টেনে আনুন / ফেলে দিন
লয়েড

উত্তর:


71

নিম্নলিখিতটি ক্রোম এবং এফএফ এ কাজ করে, তবে আমি এখনও এমন কোনও সমাধান খুঁজে পাইনি যেগুলি আইই 10 + কেও কভার করে:

// dragover and dragenter events need to have 'preventDefault' called
// in order for the 'drop' event to register. 
// See: https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Drag_operations#droptargets
dropContainer.ondragover = dropContainer.ondragenter = function(evt) {
  evt.preventDefault();
};

dropContainer.ondrop = function(evt) {
  // pretty simple -- but not for IE :(
  fileInput.files = evt.dataTransfer.files;

  // If you want to use some of the dropped files
  const dT = new DataTransfer();
  dT.items.add(evt.dataTransfer.files[0]);
  dT.items.add(evt.dataTransfer.files[3]);
  fileInput.files = dT.files;

  evt.preventDefault();
};
<!DOCTYPE html>
<html>
<body>
<div id="dropContainer" style="border:1px solid black;height:100px;">
   Drop Here
</div>
  Should update here:
  <input type="file" id="fileInput" />
</body>
</html>

আপনি সম্ভবত addEventListenerআপনার পূর্ববর্তী হ্যান্ডলারগুলি রেজিস্টার করতে jQuery (ইত্যাদি) ব্যবহার করতে চান - এটি কেবল ব্রেভিটির পক্ষে।


3
Waaaaaaaat! ওই কাজগুলো!? এটা ঠিক আমি কি খুঁজছিলাম। 2 বছর আগে কাজ হয়নি। অসাধারণ! অবশ্যই এটি আই = এ কাজ করে না) গুরুত্বপূর্ণ প্রশ্ন: নির্ভরযোগ্য বৈশিষ্ট্য সনাক্তকরণ আছে কি ?, সুতরাং আপনি আইপিতে ড্রপজোনটি আড়াল করতে পারেন, বিসি এটি কাজ করবে না।
রুডি

দোহ, খানিকটা দেরি হয়ে গেছে :) এই মুহূর্তে আমি কেবল জেএসে সাধারণ ব্যবহারকারী এজেন্ট চেক ব্যবহার করছি। অবশ্যই তোমার জন্য পরীক্ষা আছে MSIE , Trident/(IE11) এবং Edge/(IE12) ...
jlb

এফএফ 48.0.2 (ম্যাক) "প্রকারের ত্রুটি: একটি সম্পত্তি সেট করে যা কেবলমাত্র একটি গেটর রয়েছে" লাইনে fileInput.files = evt.dataTransfer.files; । সাফারি এবং ক্রোম উভয়ই ঠিকঠাক কাজ করে।
রিসাদিনহা

2
এই উদাহরণটি ফায়ারফক্স 45 লিনাক্সে কাজ করে না, তবে এটি ক্রোমে আমার জন্য কাজ করে। আমি কোনও কনসোল ত্রুটি পাই না, এটি কেবল কোনও ফাইল বাদ পড়েছে তা দেখায় না।
ব্রায়ান ওকলে

1
আসলে আমি একটি পোস্ট চেষ্টা করে সমাধান খুঁজতে চেষ্টা করেছিলাম তবে নিজের জন্যই বের করেছিলাম। চমত্কার সহজ পরিবর্তন, শুধু fileInputs [INDEX] = ... একটি নির্দিষ্ট ইনপুট ফাইল ডাটা পাস এবং তারপর একটি নতুন ইনপুট যোগ করার জন্য একটি ফাংশন showNext কল stackoverflow.com/a/43397640/6392779
নিক

51

আমি এর জন্য একটি সমাধান করেছি।

এই পদ্ধতির জন্য ড্রাগ এবং ড্রপ কার্যকারিতা কেবল ক্রোম, ফায়ারফক্স এবং সাফারি দিয়ে কাজ করে। (এটি IE10 এর সাথে কাজ করে কিনা তা জানেন না) তবে অন্যান্য ব্রাউজারগুলির জন্য "বা এখানে ক্লিক করুন" বোতামটি ভাল কাজ করে।

কোনও অঞ্চলে কোনও ফাইল টেনে আনার সময় ইনপুট ফিল্ডটি কেবল আপনার মাউসটিকে অনুসরণ করে এবং আমি পাশাপাশি একটি বোতাম যুক্ত করেছি ..

অস্বীকৃতি অস্বচ্ছতা: 0; ফাইল ইনপুটটি কেবল দৃশ্যমান তাই আপনি কী দেখতে পাচ্ছেন তা দেখতে পাবেন।


এজন্য আমি পাশাপাশি একটি বোতাম যুক্ত করেছি ^^ তবে হ্যাঁ আপনার ঠিক আছে। আমি এটি ব্যবহার করবো না ... বা আমি !?
বজারকেকে

আমি যদি জানতাম যে এটি কীভাবে কাজ করার কথা ... আমি মনে করি যে সমস্ত ড্র্যাগ / ড্রপ ফাংশনগুলিকে হোভার ইফেক্ট যুক্ত করার সাথে মোকাবিলা করতে হবে ... তবে আমি সত্যি বলতে পারি না। ফ্রিডলে দেখতে বেশ ভাল লাগছে, তবে আমার মনে হয় না যেহেতু ইন্টারনেট এক্সপ্লোরারকে সমর্থন করা দরকার সেহেতু আমি এটি ব্যবহার করতে পারি
nmz787

1
@ পাইওটারকোয়ালস্কি আমি মনে করি যে কল স্ট্যাক উপচে না আসা পর্যন্ত সম্ভাব্য পুনরাবৃত্ত কলকে ট্রিগার করবে
জন

2
আমি কেবল স্টাইল ব্যবহার করে শেষ করেছি। ইনপুটটি 100% প্রস্থ এবং উচ্চতা তৈরি করা এটিকে চারপাশে স্থান দেওয়ার চেয়ে আরও ভাল কাজ করেছে।
এডি

2
"কোনও ফাইল বাছাই করা নেই" যা আমাদের মাউস পয়েন্টারের সাথে ঘোরাফেরা করে চলে যাওয়ার উপায় থেকে মুক্তি পাওয়ার কী উপায় আছে? @ বারজারকেকে
অভিষেক সিং

27

এটি করার জন্য এটি "ডিটিএইচএমএল" এইচটিএমএল 5 উপায়। সাধারণ ফর্ম ইনপুট (যা কেবল রিকার্ডো টমাসি নির্দেশিত হিসাবে পড়া হয়)। তারপরে যদি কোনও ফাইল টেনে আনা হয় তবে তা ফর্মের সাথে সংযুক্ত থাকে। এইভাবে আপলোড করা ফাইলটি গ্রহণ করতে এই অ্যাকশন পৃষ্ঠায় পরিবর্তন প্রয়োজন।

function readfiles(files) {
  for (var i = 0; i < files.length; i++) {
    document.getElementById('fileDragName').value = files[i].name
    document.getElementById('fileDragSize').value = files[i].size
    document.getElementById('fileDragType').value = files[i].type
    reader = new FileReader();
    reader.onload = function(event) {
      document.getElementById('fileDragData').value = event.target.result;}
    reader.readAsDataURL(files[i]);
  }
}
var holder = document.getElementById('holder');
holder.ondragover = function () { this.className = 'hover'; return false; };
holder.ondragend = function () { this.className = ''; return false; };
holder.ondrop = function (e) {
  this.className = '';
  e.preventDefault();
  readfiles(e.dataTransfer.files);
}
#holder.hover { border: 10px dashed #0c0 !important; }
<form method="post" action="http://example.com/">
  <input type="file"><input id="fileDragName"><input id="fileDragSize"><input id="fileDragType"><input id="fileDragData">
  <div id="holder" style="width:200px; height:200px; border: 10px dashed #ccc"></div>
</form>

এটি আরও মনিব, যদি আপনি পুরো উইন্ডোটিকে একটি ড্রপ অঞ্চল করতে পারেন, দেখুন জিএমএলের মতো উইন্ডোটি enteringুকতে এবং রেখে কীভাবে একটি HTML5 টানা ইভেন্ট সনাক্ত করব?


1
ভাল সমাধান এখনও এটি আই <10 তে কাজ করে না কারণ আইই 9 এবং এর চেয়ে কম HTML5 ফাইলগুলিকে সমর্থন করে না API :(
ডেভলগার

1
এই লাইন: নথিটি। প্রয়োজন নেই, কারণ এটি reader.onload ফাংশনে ছাপিয়ে হয়
kurdtpage

এখানে অন্য কিউট ড্রাগ এবং ড্রপ অ্যাপ্লিকেশন রয়েছে যা ফাইল আপলোডগুলিতে জড়িত না। কেউ যদি আরও বেশি পড়াশোনা করতে চান তবে লিঙ্ক করা। codepen.io/anon/pen/MOPvZK?editors=1010
উইলিয়াম এন্টারিকেন

1
আইই 10 সমাধানটি হ্রাস করা এবং কেবলমাত্রinput type=file
উইলিয়াম এন্টারিকেন

আমি কি কিছু মিস করছি, বা আপনি .valueযখন সামনের বারে লুপটি দিয়ে পুনরাবৃত্তি করেন তখন সর্বদা সাম্প্রতিক ফাইলটি দিয়ে সম্পত্তিটি ক্রমাগত ওভাররাইট করে চলেছি?
কেভিন বার্ক

13

//----------App.js---------------------//
$(document).ready(function() {
    var holder = document.getElementById('holder');
    holder.ondragover = function () { this.className = 'hover'; return false; };
    holder.ondrop = function (e) {
      this.className = 'hidden';
      e.preventDefault();
      var file = e.dataTransfer.files[0];
      var reader = new FileReader();
      reader.onload = function (event) {
          document.getElementById('image_droped').className='visible'
          $('#image_droped').attr('src', event.target.result);
      }
      reader.readAsDataURL(file);
    };
});
.holder_default {
    width:500px; 
    height:150px; 
    border: 3px dashed #ccc;
}

#holder.hover { 
    width:400px; 
    height:150px; 
    border: 3px dashed #0c0 !important; 
}

.hidden {
    visibility: hidden;
}

.visible {
    visibility: visible;
}
<!DOCTYPE html>

<html>
    <head>
        <title> HTML 5 </title>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.js"></script>
    </head>
    <body>
      <form method="post" action="http://example.com/">
        <div id="holder" style="" id="holder" class="holder_default">
          <img src="" id="image_droped" width="200" style="border: 3px dashed #7A97FC;" class=" hidden"/>
        </div>
      </form>
    </body>
</html>


2
এটি ব্যবহারকারীকে কী দেখায়? আপনি একটি বেহাল বা অনলাইন উদাহরণ তৈরি করতে পারেন?
রুডি

@ রুডি দয়া করে রান কোড স্নিপেটে ক্লিক করুন এবং একটি চিত্র দেখার জন্য ড্রাগ-এন-ড্রপ করুন, এটি চিত্রের বাদ দেওয়া চিত্রের প্রদর্শন করবে show
দীপক

6

তত্ত্বের ক্ষেত্রে, আপনি ওভারলেলিংয়ের একটি উপাদান যুক্ত করতে পারেন <input/>এবং তারপরে dropফাইলগুলি ক্যাপচার (ফাইল এপিআই ব্যবহার করে) এর ইভেন্টটি ব্যবহার করতে পারেন এবং সেগুলি ইনপুট filesঅ্যারেতে প্রেরণ করতে পারেন ।

কোনও ফাইল ইনপুট কেবল পঠনযোগ্য । এটি একটি পুরানো সমস্যা।

তবে আপনি ফর্ম নিয়ন্ত্রণটিকে সম্পূর্ণভাবে বাইপাস করতে পারেন এবং এক্সএইচআর এর মাধ্যমে আপলোড করতে পারেন (এটির জন্য সমর্থন সম্পর্কে নিশ্চিত নয়):

এছাড়াও আপনি ক্রোমে ড্রপ ইভেন্টটি বাতিল করতে এবং আশেপাশের অঞ্চলে একটি উপাদান ব্যবহার করতে পারেন এবং ফাইলটি লোড করার ডিফল্ট আচরণকে আটকাতে পারেন।

ইনপুটটিতে একাধিক ফাইল ফেলে দেওয়া ইতিমধ্যে সাফারি এবং ফায়ারফক্সে কাজ করে।


6
যেমন আমি প্রশ্নে বলেছিলাম: আমি এক্সএইচআর 2 জানি এবং আমি এটি ব্যবহার করতে চাই না। আমি মূল অংশটি অনুমান করি: "ফাইলের ইনপুটটি কেবল পঠনযোগ্য"। যে স্তন্যপান ... ড্রপ ইভেন্ট বাতিল করা খারাপ ধারণা নয়! আমি যতটা আশা করেছিলাম ততটা ভাল না, তবে সম্ভবত সেরা। একাধিক ফাইল বাদ দেওয়া ক্রোমে খুব বিটিডব্লিউতে কাজ করে। ক্রোম এখন ডিরেক্টরিগুলি আপলোড করার অনুমতি দেয়। সমস্ত খুব চিত্কার এবং আমার কেস সাহায্য না = (
রুডি

5

এটাই আমি নিয়ে এসেছি।

জ্যাকুরি এবং এইচটিএমএল ব্যবহার করে। এটি এটি সন্নিবেশ করা ফাইলগুলিতে যুক্ত করবে।

var dropzone = $('#dropzone')


dropzone.on('drag dragstart dragend dragover dragenter dragleave drop', function(e) {
    e.preventDefault();
    e.stopPropagation();
  })

dropzone.on('dragover dragenter', function() {
    $(this).addClass('is-dragover');
  })
dropzone.on('dragleave dragend drop', function() {
    $(this).removeClass('is-dragover');
  })  
  
dropzone.on('drop',function(e) {
	var files = e.originalEvent.dataTransfer.files;
	// Now select your file upload field 
	// $('input_field_file').prop('files',files)
  });
input {	margin: 15px 10px !important;}

.dropzone {
	padding: 50px;
	border: 2px dashed #060;
}

.dropzone.is-dragover {
  background-color: #e6ecef;
}

.dragover {
	bg-color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<div class="" draggable='true' style='padding: 20px'>
	<div id='dropzone' class='dropzone'>
		Drop Your File Here
	</div>
	</div>


4

সিএসএসের একমাত্র সমাধানের জন্য:

<div class="file-area">
    <input type="file">
    <div class="file-dummy">
        <span class="default">Click to select a file, or drag it here</span>
        <span class="success">Great, your file is selected</span>
    </div>
</div>

.file-area {
    width: 100%;
    position: relative;
    font-size: 18px;
}
.file-area input[type=file] {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    opacity: 0;
    cursor: pointer;
}
.file-area .file-dummy {
    width: 100%;
    padding: 50px 30px;
    border: 2px dashed #ccc;
    background-color: #fff;
    text-align: center;
    transition: background 0.3s ease-in-out;
}
.file-area .file-dummy .success {
    display: none;
}
.file-area:hover .file-dummy {
    border: 2px dashed #1abc9c;
}
.file-area input[type=file]:valid + .file-dummy {
    border-color: #1abc9c;
}
.file-area input[type=file]:valid + .file-dummy .success {
    display: inline-block;
}
.file-area input[type=file]:valid + .file-dummy .default {
    display: none;
}

Https://codepen.io/Scribeblerockerz/pen/qdWzJw থেকে পরিবর্তিত


4

আমি জানি ক্রোমে কিছু কৌশল কাজ করে:

ড্রপ জোনে ফাইলগুলি নামানোর সময় আপনি একটি dataTransfer.filesবস্তু পাবেন, এটি এক FileListধরণের অবজেক্ট, এতে আপনি টেনে নিয়েছেন এমন সমস্ত ফাইল রয়েছে। এদিকে, <input type="file" />উপাদানটির সম্পত্তি রয়েছে files, এটি একই FileListধরণের অবজেক্ট।

সুতরাং, আপনি কেবল সম্পত্তিটিকে dataTransfer.filesবস্তুটি নির্ধারণ করতে পারেন input.files


3
হ্যাঁ, আজকাল এটি করে। কৌশল নয়। খুব ইচ্ছাকৃত। এছাড়াও খুব ইচ্ছাকৃতভাবে খুব সীমাবদ্ধ। আপনি তালিকায় ফাইল যুক্ত করতে বা তালিকাটিকে মোটেই পরিবর্তন করতে পারবেন না। টেনে আনতে এবং নামানো ফাইলগুলি মনে রাখতে পারে এবং এগুলিতে যোগ input.filesকরতে পারে তবে = (
রুডি

3

যে কেউ 2018 এ এটি করতে চাইছেন, তাদের জন্য আমি আরও অনেক ভাল এবং সহজ সমাধান পেয়েছি তারপরে সমস্ত পুরানো জিনিস এখানে পোস্ট করা হয়েছে। আপনি স্রেফ ভ্যানিলা এইচটিএমএল, জাভাস্ক্রিপ্ট এবং সিএসএসের সাহায্যে একটি দুর্দান্ত দেখাচ্ছে ড্র্যাগ এবং ড্রপ বাক্স তৈরি করতে পারেন।

(কেবলমাত্র ক্রোমে কাজ করে)

এইচটিএমএল দিয়ে শুরু করা যাক।

<div>
<input type="file" name="file" id="file" class="file">
<span id="value"></span>
</div>

তারপরে আমরা স্টাইলিংয়ে যাব।

    .file {
        width: 400px;
        height: 50px;
        background: #171717;
        padding: 4px;
        border: 1px dashed #333;
        position: relative;
        cursor: pointer;
    }

    .file::before {
        content: '';
        position: absolute;
        background: #171717;
        font-size: 20px;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        width: 100%;
        height: 100%;
    }

    .file::after {
        content: 'Drag & Drop';
        position: absolute;
        color: #808080;
        font-size: 20px;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
    }

আপনি এটি করার পরে এটি ইতিমধ্যে ভাল দেখায়। তবে আমি কল্পনা করেছি যে আপনি কী ফাইলটি বাস্তবে আপলোড করেছেন তা দেখতে চাইলে আমরা কিছু জাভাস্ক্রিপ্ট করতে যাচ্ছি। পিএফপি-মান স্প্যান মনে আছে? এখানে আমরা ফাইলের নাম মুদ্রণ করব।

let file = document.getElementById('file');
file.addEventListener('change', function() {
    if(file && file.value) {
        let val = file.files[0].name;
        document.getElementById('value').innerHTML = "Selected" + val;
    }
});

এবং এটাই.


আমি একটি আনক্যাচড টাইপ এরির পেয়েছি: আমি যখন এই কোডটি ব্যবহার করি - ক্রমের অধীনে - নালীর সম্পত্তি 'অ্যাডএভেন্টলিস্টনার' পড়তে পারি না - এটি কি Chrome এর সর্বশেষ সংস্করণে কাজ করে না?
আগুনের সাথে আগুনের লড়াই

এটি ক্রোমের সর্বশেষ সংস্করণে আমার পক্ষে দুর্দান্ত কাজ করে। নিশ্চিত হয়ে নিন যে আপনি সঠিক আইডি ব্যবহার করেছেন
মাইকেল

1

@ বারজারকেকে দুর্দান্ত কাজ। এটিকে জ্যাকুয়েরিতে পদ্ধতি হিসাবে ব্যবহার করার জন্য, আমি তাঁর কাজে কিছু পরিবর্তন করেছি:

$.fn.dropZone = function() {
  var buttonId = "clickHere";
  var mouseOverClass = "mouse-over";

  var dropZone = this[0];
  var $dropZone = $(dropZone);
  var ooleft = $dropZone.offset().left;
  var ooright = $dropZone.outerWidth() + ooleft;
  var ootop = $dropZone.offset().top;
  var oobottom = $dropZone.outerHeight() + ootop;
  var inputFile = $dropZone.find("input[type='file']");
  dropZone.addEventListener("dragleave", function() {
    this.classList.remove(mouseOverClass);
  });
  dropZone.addEventListener("dragover", function(e) {
    console.dir(e);
    e.preventDefault();
    e.stopPropagation();
    this.classList.add(mouseOverClass);
    var x = e.pageX;
    var y = e.pageY;

    if (!(x < ooleft || x > ooright || y < ootop || y > oobottom)) {
      inputFile.offset({
        top: y - 15,
        left: x - 100
      });
    } else {
      inputFile.offset({
        top: -400,
        left: -400
      });
    }

  }, true);
  dropZone.addEventListener("drop", function(e) {
    this.classList.remove(mouseOverClass);
  }, true);
}

$('#drop-zone').dropZone();

ওয়ার্কিং ফিডল


1
এফওয়াইআই: ফিডল লিঙ্কটি নষ্ট হয়ে গেছে।
jimiayler

1

কয়েক বছর পরে, আমি এই লাইব্রেরিটি তৈরি করেছি কোনও এইচটিএমএল উপাদানগুলিতে ড্রপ ফাইলগুলি করতে ।

আপনি এটি ব্যবহার করতে পারেন

const Droppable = require('droppable');

const droppable = new Droppable({
    element: document.querySelector('#my-droppable-element')
})

droppable.onFilesDropped((files) => {
    console.log('Files were dropped:', files);
});

// Clean up when you're done!
droppable.destroy();

ফর্ম জমা দেওয়ার পরে কেউ কীভাবে নির্বাচিত ফাইলটি আনবে?
নিখিল ভিজে

-1

আপনি যা করতে পারেন তা হ'ল একটি ফাইল-ইনপুট প্রদর্শন করা এবং এটি আপনার স্বচ্ছ ড্রপ-এরিয়ার সাথে ওভারলে করে, যেমন নাম ব্যবহার করার ক্ষেত্রে যত্নবান file[1]। To অবশ্যই আছেenctype="multipart/form-data"Your আপনার ফর্ম ট্যাগের ভিতরে ।

তারপরে ড্রপ-এরিয়াটি অতিরিক্ত ফাইলগুলিকে হ্যান্ডল করুন গতিশীলভাবে 2 ফাইলের আরও বেশি ফাইল ইনপুট তৈরি করে iles

শেষ পর্যন্ত (সম্মুখ-প্রান্ত) ফর্মটি জমা দিন।


এই পদ্ধতিটি হ্যান্ডেল করার জন্য যা দরকার তা হ'ল ফাইলগুলির অ্যারে হ্যান্ডেল করার জন্য আপনার পদ্ধতিটি পরিবর্তন করা।


1
এই ফাইল ইনপুট একটি multipleবিশেষত্ব আছে । 1 টির বেশি ফাইল ইনপুট লাগবে না। যদিও এটি সমস্যা নয়। আমি কীভাবে Fileফাইল ইনপুটগুলিতে জিনিসগুলি পেতে পারি ? আমি ভাবছি এটির জন্য কিছু কোড উদাহরণ প্রয়োজন ...
রুডি

1
@ রুডি আপনি পারবেন না, এটাই সমস্যা।
রিকার্ডো তোমাসি

1
কি পারে না? একাধিক? হ্যা, তুমি পারো. আমি শুধু এটা বলেছি। একাধিক সমস্যা নয়। একটি (টেনে নিয়ে যাওয়া) থেকে ফাইলগুলি কোনও ফাইল ইনপুটে নিয়ে যাওয়া, সমস্যাটি।
রুডি

@ রুডি একটি ফাইল ইনপুটে ফাইল (গুলি) টেনে নিয়ে যাওয়া ক্রোম / এফএফ ( filesসম্পত্তি ব্যবহার করে ) এর মাধ্যমে সম্ভব , তবে আমি আইই তে পরিচালনা করতে পারি না - আপনার ভাগ্য কি পড়েছে?
jlb

1
@jlb "ফাইলের সম্পত্তি ব্যবহার করা" আপনার অর্থ কী? আপনি কি প্রাসঙ্গিক কোড দিয়ে উত্তর দিতে পারবেন? আমি যা খুঁজছিলাম তা কোনও ব্রাউজারে কাজ করে না / বিদ্যমান নয়।
রুডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.