আমি কীভাবে ফাইললিস্ট থেকে কোনও ফাইল সরিয়ে ফেলব


111

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

এখন আমি কয়েকটি ফাইল সরিয়ে ফেলতে চাই, তবে কীভাবে বা এটি এমনকি সম্ভব হলে আমি জানি না।

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


শুধু কৌতূহলী: আপনি এটি করতে চান কেন? আপনি ব্যবহারকারীদের নির্বাচিত (কিছু) ফাইল সম্পর্কে "কেন আমি তাদের জন্য কোনও উপকার পাইনি"?
মার্সেল করপেল

23
এটি সম্ভবত আরও বেশি যাতে ব্যবহারকারী আপলোড করার আগে ফাইলগুলি সরাতে পারে। আপনি যদি প্রাথমিকভাবে 20 নির্বাচন করেছিলেন এবং তারপরে আপনি স্থির করেন যে আপনি আসলে 14 তম আপলোড করতে চান না, তবে আপনি কেবল সেটিকে সরাতে পারবেন না, আপনাকে আবারও শুরু করতে হবে (যা কিছুটা ব্যথা হ'ল)। আমি মনে করি ফাইললিস্টকে কেবলমাত্র পঠনযোগ্য করে তোলা একটি খারাপ নজরদারি, যদি না দেখা হয় এমন কিছু সুরক্ষা জড়িততা না দেখছি।
রাফায়েল

এটি ইনপুট এর ফাইললিস্ট থেকে ফাইলগুলি সরাসরি মুছে ফেলার সাথে সুরক্ষা সমস্যা তবে আপনি ফাইল আপলোড ডায়ালগ বন্ধ করার সাথে সাথেই সেই ফাইললিস্টটি ক্লোন করতে পারেন এবং তারপরে এই ক্লোনটি সংশোধন করতে পারেন এবং
এজ্যাক্সের

উত্তর:


147

আপনি যদি কেবলমাত্র কয়েকটি নির্বাচিত ফাইল মুছতে চান: আপনি পারবেন না। আপনি যে ফাইল এপিআই ওয়ার্কিং ড্রাফ্টের সাথে লিঙ্ক করেছেন তাতে একটি নোট রয়েছে:

HTMLInputElementইন্টারফেস [HTML5 এর] একটি হয়েছে কেবলমাত্র FileList গুণ, [...]
[জোর খনি]

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

document.getElementById('multifile').value = "";

বিটিডাব্লু, নিবন্ধটি ওয়েব অ্যাপ্লিকেশন থেকে ফাইলগুলি ব্যবহার করাও আগ্রহী হতে পারে।


1
মনে রাখবেন যে একটি গুণ কেবল পঠনযোগ্য হওয়ার অর্থ এই নয় যে আপনি যে পয়েন্টটি দেখিয়েছেন এটি পরিবর্তন করতে পারবেন না। আপনি ফাইললিস্টটি হেরফের করতে পারেন (যদি এটি সম্ভব হয়) তবে এর অর্থ হ'ল আপনি এটিতে একটি নতুন ফাইললিস্ট বরাদ্দ করতে পারবেন না।
রবিন বারজন

1
ফায়ারফক্স লেখার ক্রিয়াকলাপ অনুমোদন না করে @ রোবিনবারজোন ক্রোম ´readonly´ বৈশিষ্ট্যটিকে উপেক্ষা করবে বলে মনে হচ্ছে। দুর্ভাগ্যবশত আপনার পরামর্শের শুধু নিপূণভাবে FileList ফায়ারফক্স পারেন মধ্যে কাজ করে না।
বোরিসদিয়াকুর

1
শুধু lengthশুধু পড়ার জন্য, আমি মনে করি। আমি স্প্লাইস দিয়ে কোনও আইটেম মুছতে চেষ্টা করি, এটি ক্রোমে ব্যর্থ।
zhiyelee

যোগ করার কোনও উপায় আছে?
রাস্তার আলো

1
@ স্ট্রিটলাইট এটি কোনও বিশাল সুরক্ষার দুর্বলতা হতে পারে , যদি সাইটের মালিক কোনও ব্যবহারকারীর মেশিন থেকে কোন ফাইলগুলি আপলোড করতে পারে তা নির্ধারণ করতে পারে।
মার্সেল করপেল

29

এই প্রশ্নের উত্তর ইতিমধ্যে চিহ্নিত করা হয়েছে, তবে আমি এমন কিছু তথ্য ভাগ করতে চাই যা ফাইললিস্ট ব্যবহার করে অন্যকে সহায়তা করতে পারে।

ফাইললিস্টটিকে অ্যারের হিসাবে বিবেচনা করা সুবিধাজনক হবে তবে সাজানো, শিফট, পপ এবং স্লাইসের মতো পদ্ধতিগুলি কার্যকর হয় না। অন্যরা যেমন পরামর্শ দিয়েছে, আপনি ফাইললিস্টটি একটি অ্যারেতে অনুলিপি করতে পারেন। তবে, একটি লুপ ব্যবহার না করে এই রূপান্তরটি পরিচালনা করার জন্য একটি সহজ একটি লাইন সমাধান রয়েছে।

 // fileDialog.files is a FileList 

 var fileBuffer=[];

 // append the file list to an array
 Array.prototype.push.apply( fileBuffer, fileDialog.files ); // <-- here

 // And now you may manipulated the result as required

 // shift an item off the array
 var file = fileBuffer.shift(0,1);  // <-- works as expected
 console.info( file.name + ", " + file.size + ", " + file.type );

 // sort files by size
 fileBuffer.sort(function(a,b) {
    return a.size > b.size ? 1 : a.size < b.size ? -1 : 0;
 });

এফএফ, ক্রোম এবং আই 10 + এ ঠিক আছে পরীক্ষা করা হয়েছে


4
Array.from(fileDialog.files)সহজ
মুহাম্মদ উমর

1
@ মুহম্মদ উমর - ধন্যবাদ, আমি একমত যে এটি সহজ এবং এটি একটি বিকল্প উত্তর হিসাবে তালিকাভুক্ত করা হয়েছে। তবুও, এটি নির্ভর করে কোন ব্রাউজারগুলির কোনওটিকে সমর্থন করা উচিত এবং যদি তাদের অ্যারে.ফ্রোম () ব্যবহার করার জন্য কোনও পলিফিলের প্রয়োজন হয়। দেখুন: স্ট্যাকওভারফ্লো.com
রবার্তো

আপনি কীভাবে ফাইললিস্টটি সংশোধন করবেন? ইনপুটটিতে এই নতুন অ্যারে বরাদ্দ করবেন fileDialog.files = fileBuffer ?
ইওজি

@ 3zzy - ফাইললিস্টটি পরিবর্তন করা সম্ভব তবে কেবল আধুনিক ব্রাউজারে। বিশদগুলির জন্য এই এসও প্রশ্নগুলি দেখুন: stackoverflow.com/a/47522812/943435
রবার্তো

22

আপনি যদি চিরসবুজ ব্রাউজারগুলি (ক্রোম, ফায়ারফক্স, এজ, তবে সাফারি 9+ এ কাজ করে) লক্ষ্য করে থাকেন বা আপনি কোনও পলিফিল সামর্থ্য করতে পারেন তবে আপনি ফাইললিস্টটিকে এটি ব্যবহার করে অ্যারেতে পরিণত করতে পারেন Array.from():

let fileArray = Array.from(fileList);

তারপরে এটি Fileঅন্য অ্যারের মতো এর অ্যারে পরিচালনা করা সহজ ।


পারফেক্ট! আপনি কীভাবে জানেন আই আই সমর্থন সম্পর্কে? অথবা আপনি কোনও পলিফিলের লিঙ্কটি ভাগ করে নিতে পারেন?
সেরিহি ম্যাটরঞ্চইক

আমি এটি চেষ্টা করে দেখিনি তবে এটিই প্রথম গুগল ফলাফল;) github.com/mathiasbynens/Array.from
adlr0

এটা শুধুমাত্র আপনি হ্যান্ডেল করতে অনুমতি দেবে fileArrayনা fileList
বিপিনকুণ্ডল

12

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

Node.prototype.replaceWith = function(node)
{
    this.parentNode.replaceChild(node, this);
};
if(window.File && window.FileList)
{
    var topicForm = document.getElementById("yourForm");
    topicForm.fileZone = document.getElementById("fileDropZoneElement");
    topicForm.fileZone.files = new Array();
    topicForm.fileZone.inputWindow = document.createElement("input");
    topicForm.fileZone.inputWindow.setAttribute("type", "file");
    topicForm.fileZone.inputWindow.setAttribute("multiple", "multiple");
    topicForm.onsubmit = function(event)
    {
        var request = new XMLHttpRequest();
        if(request.upload)
        {
            event.preventDefault();
            topicForm.ajax.value = "true";
            request.upload.onprogress = function(event)
            {
                var progress = event.loaded.toString() + " bytes transfered.";
                if(event.lengthComputable)
                progress = Math.round(event.loaded / event.total * 100).toString() + "%";
                topicForm.fileZone.innerHTML = progress.toString();
            };
            request.onload = function(event)
            {
                response = JSON.parse(request.responseText);
                // Handle the response here.
            };
            request.open(topicForm.method, topicForm.getAttribute("action"), true);
            var data = new FormData(topicForm);
            for(var i = 0, file; file = topicForm.fileZone.files[i]; i++)
                data.append("file" + i.toString(), file);
            request.send(data);
        }
    };
    topicForm.fileZone.firstChild.replaceWith(document.createTextNode("Drop files or click here."));
    var handleFiles = function(files)
    {
        for(var i = 0, file; file = files[i]; i++)
            topicForm.fileZone.files.push(file);
    };
    topicForm.fileZone.ondrop = function(event)
    {
        event.stopPropagation();
        event.preventDefault();
        handleFiles(event.dataTransfer.files);
    };
    topicForm.fileZone.inputWindow.onchange = function(event)
    {
        handleFiles(topicForm.fileZone.inputWindow.files);
    };
    topicForm.fileZone.ondragover = function(event)
    {
        event.stopPropagation();
        event.preventDefault();
    };
    topicForm.fileZone.onclick = function()
    {
        topicForm.fileZone.inputWindow.focus();
        topicForm.fileZone.inputWindow.click();
    };
}
else
    topicForm.fileZone.firstChild.replaceWith(document.createTextNode("It's time to update your browser."));

এজাক্স কি একমাত্র উপায় তবে আমি অনুমান করি?
মুহাম্মদ উমার

10

আমি এর জন্য খুব দ্রুত এবং স্বল্প কাজের সন্ধান পেয়েছি। অনেক জনপ্রিয় ব্রাউজারে পরীক্ষিত (ক্রোম, ফায়ারফক্স, সাফারি);

প্রথমত, আপনাকে ফাইললিস্টকে একটি অ্যারেতে রূপান্তর করতে হবে

var newFileList = Array.from(event.target.files);

নির্দিষ্ট উপাদান মুছতে এটি ব্যবহার করুন

newFileList.splice(index,1);

12
আপনি নতুন ভেরিয়েবল তৈরি করেছেন event.target.filesযা থেকে
ইনপুটটির সাথে লিঙ্কযুক্ত

6

আমি জানি এটি একটি পুরানো প্রশ্ন তবে এটি এই ইস্যুতে অনুসন্ধান ইঞ্জিনগুলিতে উচ্চতর র‌্যাঙ্কিং।

ফাইললিস্ট অবজেক্টের বৈশিষ্ট্য মুছে ফেলা যায় না তবে ফায়ারফক্সে সেগুলি পরিবর্তন করা যেতে পারে । আমার সমস্যাটি এই সমস্যাটি হ'ল IsValid=trueচেক পাস করা ফাইলগুলিতে এবং যেগুলি না হয় তাদের একটি সম্পত্তি যুক্ত করা IsValid=false

তারপরে কেবলমাত্র বৈশিষ্ট্যযুক্ত ফর্মডাটাতেIsValid=true যুক্ত করা আছে তা নিশ্চিত করতে আমি তালিকার মধ্য দিয়ে লুপ করছি


ফর্মডাটা, তাই আপনি এজ্যাক্সের মাধ্যমে তাদের পাঠাবেন?
মুহাম্মদ উমার

1

এটি করার জন্য আরও মার্জিত উপায় হতে পারে তবে এখানে আমার সমাধান। Jquery সঙ্গে

fileEle.value = "";
var parEle = $(fileEle).parent();
var newEle = $(fileEle).clone()
$(fileEle).remove();
parEle.append(newEle);

মূলত আপনি ইনপুটটির মানটি সাফ করেন। এটি ক্লোন করুন এবং ক্লোনটি পুরানোটির জায়গায় রাখুন।


1

এটি অস্থায়ী, তবে আমার একই সমস্যা ছিল যা আমি এইভাবে সমাধান করেছি। আমার ক্ষেত্রে আমি এক্সএমএলএইচটিপি অনুরোধের মাধ্যমে ফাইলগুলি আপলোড করছি, তাই আমি ফর্মডেটা অ্যাডেন্ডিংয়ের মাধ্যমে ফাইললিস্ট ক্লোনড ডেটা পোস্ট করতে সক্ষম হয়েছি। কার্যকারিতা হ'ল আপনি যতবার ইচ্ছা একাধিক ফাইল টেনে আনুন এবং ফেলে দিতে পারেন বা ফাইল নির্বাচন করতে পারবেন (পুনরায় ফাইল নির্বাচন করা ক্লোন করা ফাইললিস্ট পুনরায় সেট করবে না), (ক্লোনড) ফাইল তালিকা থেকে আপনার পছন্দসই যে কোনও ফাইল সরিয়ে ফেলতে পারবেন এবং xMLhttprequest এর মাধ্যমে জমা দিতে পারেন সেখানে রেখেছি এটাই আমি করেছি। এটি এখানে আমার প্রথম পোস্ট তাই কোডটি একটু অগোছালো। দুঃখিত। আহ, এবং আমাকে জুমারি স্ক্রিপ্টে instead এর পরিবর্তে jQuery ব্যবহার করতে হয়েছিল।

// some global variables
var clon = {};  // will be my FileList clone
var removedkeys = 0; // removed keys counter for later processing the request
var NextId = 0; // counter to add entries to the clone and not replace existing ones

jQuery(document).ready(function(){
    jQuery("#form input").change(function () {

    // making the clone
    var curFiles = this.files;
    // temporary object clone before copying info to the clone
    var temparr = jQuery.extend(true, {}, curFiles);
    // delete unnecessary FileList keys that were cloned
    delete temparr["length"];
    delete temparr["item"];

    if (Object.keys(clon).length === 0){
       jQuery.extend(true, clon, temparr);
    }else{
       var keysArr = Object.keys(clon);
       NextId = Math.max.apply(null, keysArr)+1; // FileList keys are numbers
       if (NextId < curFiles.length){ // a bug I found and had to solve for not replacing my temparr keys...
          NextId = curFiles.length;
       }
       for (var key in temparr) { // I have to rename new entries for not overwriting existing keys in clon
          if (temparr.hasOwnProperty(key)) {
             temparr[NextId] = temparr[key];
             delete temparr[key];
                // meter aca los cambios de id en los html tags con el nuevo NextId
                NextId++;
          }
       } 
       jQuery.extend(true, clon, temparr); // copy new entries to clon
    }

// modifying the html file list display

if (NextId === 0){
    jQuery("#filelist").html("");
    for(var i=0; i<curFiles.length; i++) {
        var f = curFiles[i];
        jQuery("#filelist").append("<p id=\"file"+i+"\" style=\'margin-bottom: 3px!important;\'>" + f.name + "<a style=\"float:right;cursor:pointer;\" onclick=\"BorrarFile("+i+")\">x</a></p>"); // the function BorrarFile will handle file deletion from the clone by file id
    }
}else{
    for(var i=0; i<curFiles.length; i++) {
        var f = curFiles[i];
        jQuery("#filelist").append("<p id=\"file"+(i+NextId-curFiles.length)+"\" style=\'margin-bottom: 3px!important;\'>" + f.name + "<a style=\"float:right;cursor:pointer;\" onclick=\"BorrarFile("+(i+NextId-curFiles.length)+")\">x</a></p>"); // yeap, i+NextId-curFiles.length actually gets it right
    }        
}
// update the total files count wherever you want
jQuery("#form p").text(Object.keys(clon).length + " file(s) selected");
    });
});

function BorrarFile(id){ // handling file deletion from clone
    jQuery("#file"+id).remove(); // remove the html filelist element
    delete clon[id]; // delete the entry
    removedkeys++; // add to removed keys counter
    if (Object.keys(clon).length === 0){
        jQuery("#form p").text(Object.keys(clon).length + " file(s) selected");
        jQuery("#fileToUpload").val(""); // I had to reset the form file input for my form check function before submission. Else it would send even though my clone was empty
    }else{
        jQuery("#form p").text(Object.keys(clon).length + " file(s) selected");
    }
}
// now my form check function

function check(){
    if( document.getElementById("fileToUpload").files.length == 0 ){
        alert("No file selected");
        return false;
    }else{
        var _validFileExtensions = [".pdf", ".PDF"]; // I wanted pdf files
        // retrieve input files
        var arrInputs = clon;

       // validating files
       for (var i = 0; i < Object.keys(arrInputs).length+removedkeys; i++) {
         if (typeof arrInputs[i]!="undefined"){
           var oInput = arrInputs[i];
           if (oInput.type == "application/pdf") {
               var sFileName = oInput.name;
               if (sFileName.length > 0) {
                   var blnValid = false;
                   for (var j = 0; j < _validFileExtensions.length; j++) {
                     var sCurExtension = _validFileExtensions[j];
                     if (sFileName.substr(sFileName.length - sCurExtension.length, sCurExtension.length).toLowerCase() == sCurExtension.toLowerCase()) {
                       blnValid = true;
                       break;
                     }
                   }
                  if (!blnValid) {
                    alert("Sorry, " + sFileName + " is invalid, allowed extensions are: " + _validFileExtensions.join(", "));
                    return false;
                  }
              }
           }else{
           alert("Sorry, " + arrInputs[0].name + " is invalid, allowed extensions are: " + _validFileExtensions.join(" or "));
           return false;
           }
         }
       }

    // proceed with the data appending and submission
    // here some hidden input values i had previously set. Now retrieving them for submission. My form wasn't actually even a form...
    var fecha = jQuery("#fecha").val();
    var vendor = jQuery("#vendor").val();
    var sku = jQuery("#sku").val();
    // create the formdata object
    var formData = new FormData();
    formData.append("fecha", fecha);
    formData.append("vendor", encodeURI(vendor));
    formData.append("sku", sku);
    // now appending the clone file data (finally!)
    var fila = clon; // i just did this because I had already written the following using the "fila" object, so I copy my clone again
    // the interesting part. As entries in my clone object aren't consecutive numbers I cannot iterate normally, so I came up with the following idea
    for (i = 0; i < Object.keys(fila).length+removedkeys; i++) { 
        if(typeof fila[i]!="undefined"){
            formData.append("fileToUpload[]", fila[i]); // VERY IMPORTANT the formdata key for the files HAS to be an array. It will be later retrieved as $_FILES['fileToUpload']['temp_name'][i]
        }
    }
    jQuery("#submitbtn").fadeOut("slow"); // remove the upload btn so it can't be used again
    jQuery("#drag").html(""); // clearing the output message element
    // start the request
    var xhttp = new XMLHttpRequest();
    xhttp.addEventListener("progress", function(e) {
            var done = e.position || e.loaded, total = e.totalSize || e.total;
        }, false);
        if ( xhttp.upload ) {
            xhttp.upload.onprogress = function(e) {
                var done = e.position || e.loaded, total = e.totalSize || e.total;
                var percent = done / total;
                jQuery("#drag").html(Math.round(percent * 100) + "%");
            };
        }
      xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
         var respuesta = this.responseText;
         jQuery("#drag").html(respuesta);
        }
      };
      xhttp.open("POST", "your_upload_handler.php", true);  
      xhttp.send(formData);
    return true;
    }
};

এখন এর জন্য এইচটিএমএল এবং শৈলী। আমি বেশ নবাগত কিন্তু এই সবই আমার পক্ষে কাজ করেছিল এবং এটি বের করতে আমাকে কিছুটা সময় নিয়েছিল।

<div id="form" class="formpos">
<!--    Select the pdf to upload:-->
  <input type="file" name="fileToUpload[]" id="fileToUpload" accept="application/pdf" multiple>
  <div><p id="drag">Drop your files here or click to select them</p>
  </div>
  <button id="submitbtn" onclick="return check()" >Upload</button>
// these inputs are passed with different names on the formdata. Be aware of that
// I was echoing this, so that's why I use the single quote for php variables
  <input type="hidden" id="fecha" name="fecha_copy" value="'.$fecha.'" />
  <input type="hidden" id="vendor" name="vendorname" value="'.$vendor.'" />
  <input type="hidden" id="sku" name="sku" value="'.$sku.'"" />
</div>
<h1 style="width: 500px!important;margin:20px auto 0px!important;font-size:24px!important;">File list:</h1>
<div id="filelist" style="width: 500px!important;margin:10px auto 0px!important;">Nothing selected yet</div>

এর জন্য শৈলীগুলি। জুমলার আচরণকে ওভাররাইড করার জন্য আমার তাদের কয়েকটি চিহ্নিত করতে হয়েছিল!

.formpos{
  width: 500px;
  height: 200px;
  border: 4px dashed #999;
  margin: 30px auto 100px;
 }
.formpos  p{
  text-align: center!important;
  padding: 80px 30px 0px;
  color: #000;
}
.formpos  div{
  width: 100%!important;
  height: 100%!important;
  text-align: center!important;
  margin-bottom: 30px!important;
}
.formpos input{
  position: absolute!important;
  margin: 0!important;
  padding: 0!important;
  width: 500px!important;
  height: 200px!important;
  outline: none!important;
  opacity: 0!important;
}
.formpos button{
  margin: 0;
  color: #fff;
  background: #16a085;
  border: none;
  width: 508px;
  height: 35px;
  margin-left: -4px;
  border-radius: 4px;
  transition: all .2s ease;
  outline: none;
}
.formpos button:hover{
  background: #149174;
  color: #0C5645;
}
.formpos button:active{
  border:0;
}

আশা করি এটা কাজে লাগবে.


1

ধন্যবাদ নিকোলাস অ্যান্ডারসন সহজ এবং সরল, এখানে আপনার কোড প্রয়োগ এবং jquery ব্যবহার করে আমার কোডে কাজ করছে।

এইচটিএমএল

<input class="rangelog btn border-aero" id="file_fr" name="file_fr[]" multiple type="file" placeholder="{$labels_helpfiles_placeholder_file}">
<span style="cursor: pointer; cursor: hand;" onclick="cleanInputs($('#file_fr'))"><i class="fa fa-trash"></i> Empty chosen files</span>

জেএস কোড

   function cleanInputs(fileEle){
    $(fileEle).val("");
    var parEle = $(fileEle).parent();
    var newEle = $(fileEle).clone()
    $(fileEle).remove();
    $(parEle).prepend(newEle);
}


0

আপনার যদি ভাগ্য থাকে যে ফাইলগুলির সাথে ডাটাবেসে একটি পোস্টের অনুরোধ পাঠানো হচ্ছে এবং আপনার ডিএমএমে যে ফাইলগুলি প্রেরণ করতে চান সেগুলি আপনার কাছে রয়েছে

ফাইল তালিকার ফাইলটি আপনার ডিওমে উপস্থিত রয়েছে কিনা তা আপনি কেবল খতিয়ে দেখতে পারেন, এবং অবশ্যই যদি তা না হয় তবে আপনি কেবলমাত্র সেই উপাদানটি ডি ডিবিতে প্রেরণ করবেন না।


-1

আপনি একটি অ্যারে তৈরি করতে এবং এটি কেবল পঠনযোগ্য ফাইল তালিকার পরিবর্তে ব্যবহার করতে পারেন।

var myReadWriteList = new Array();
// user selects files later...
// then as soon as convenient... 
myReadWriteList = FileListReadOnly;

এই বিন্দুটির পরে আপনার বিল্ট ইন তালিকার পরিবর্তে আপনার তালিকার বিরুদ্ধে আপলোড করুন। আপনি যে প্রসঙ্গে কাজ করছেন সে সম্পর্কে আমি নিশ্চিত নই তবে আমি যে jquery প্লাগইন পেয়েছি তার সাথে কাজ করছি এবং আমার যা করতে হবে তা হ'ল প্লাগইনটির উত্সটি গ্রহণ করে এবং পৃষ্ঠায় রেখে এটি ব্যবহার করে<script> ট্যাগ । তারপরে উত্সের উপরে আমি আমার অ্যারে যুক্ত করেছি যাতে এটি বিশ্বব্যাপী ভেরিয়েবল হিসাবে কাজ করতে পারে এবং প্লাগইন এটি উল্লেখ করতে পারে।

তারপরে এটি কেবল রেফারেন্সগুলি অদলবদলের বিষয় ছিল।

আমি মনে করি এটি আপনাকে আবারও ড্র্যাগ ও ড্রপ যুক্ত করার অনুমতি দেবে, যদি অন্তর্নির্মিত তালিকাটি কেবল পঠনযোগ্য হয় তবে আপনি বাদ দেওয়া ফাইলগুলি তালিকায় আর কীভাবে পেতে পারেন?

:))


4
আমি খুব শীঘ্রই লিখেছি .... মনে হচ্ছে যে ফাইলটি তালিকার সমান করার মুহুর্তটি কেবল পাঠযোগ্য সমস্যাটি ফিরে আসবে .... সুতরাং আমি যা করতে বেছে নিয়েছি তা দ্বিগুণ এবং কিছুটা বেদনাদায়ক তবে কার্যকর ... আমি রাখি আপলোডের জন্য ফাইলগুলির একটি ভিজিবিলের তালিকা এবং এখান থেকে ব্যবহারকারী মুছে ফেলতে পারে ... অবশ্যই <ul> ট্যাগে <li> ট্যাগটি সরিয়ে ফেলা সহজসাধ্য ... সুতরাং আমি যে একমাত্র পদ্ধতি নিয়ে এসেছি তা হল একটি মাধ্যমিক তালিকা রাখা is মুছে ফেলা ফাইলগুলি এবং আপলোড প্রক্রিয়া চলাকালীন এটি উল্লেখ করুন ... অতএব যদি ফাইলটি আপলোড তালিকায় থাকে তবে আমি কেবল এটি এড়িয়ে যাব এবং ব্যবহারকারীটি বুদ্ধিমান কেউ নয়।
ক্যারি আব্রামাফ

আপনি যখন ভেরিয়েবলটিকে FileListবস্তুটি বরাদ্দ করেন myReadWriteList, তখন এটির ধরণটি থেকে পরিবর্তিত Arrayহয়FileList , তাই এই একটি সমাধান নয়।
adlr0

-2

আমি কেবল পাঠ্যটিতে ইনপুট প্রকারটি এবং ফাইলে ফিরে আসি: ডি


এটি একটি মন্তব্য হিসাবে বিবেচনা করা হয়
ইভান কালায়ানোভ

কীভাবে কাজ করার কথা? আপনি কীভাবে এটি অর্জন করেছেন?
উলরিচ দোহউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.