Хорошо, внесены некоторые изменения, чтобы сделать его более полным и полезным в качестве примера, и я думаю, что больше нет опечаток. Обратите внимание, что вы также можете проголосовать сейчас :)

тоящее время я создаю приложение R Shiny с некоторыми пользовательскими js, чтобы обеспечить функциональность перетаскивания. В то время как перетаскивание отлично работает для одного файла, когда я сбрасываю его, используя блестящий JS, загрузка того же файла снова не работает должным образом. Я понимаю, что это связано с тем, что функция onchange не запускается при повторном вводе файла с тем же именем (независимо от того, было ли изменено содержимое файла)

JS:

var datasets = {};
var dragOver = function(e) { e.preventDefault(); };

var dropData = function(e) {
    e.preventDefault();
    handleDrop(e.dataTransfer.files);
};

var removeFiles = function(e){
    jQuery('#datafile').empty();
}

var handleDrop = function(files) {
    for (var i = 0, f; f = files[i]; i++) {
    var reader = new FileReader();

    reader.onload = (function(file) {
        return function(e) {
        datasets[file.name.toLowerCase()] = e.target.result;
        Shiny.onInputChange("datafile", datasets);
        var div = document.createElement("div");
        var src = "https://cdn0.iconfinder.com/data/icons/office/512/e42-512.png";
        div.id = "datasets";
        div.innerHTML = [
            "<img class='thumb' src='", src, "' title='", encodeURI(file.name),
            "'/>", "<br>", file.name, "<br>"].join('');
        document.getElementById("drop-area").appendChild(div);
        };
    })(f);
    reader.readAsText(f);
    }
};

Server.R (часть этого, смотрящая на ввод файла):

observeEvent(input$datafile, {
    infile <- input$datafile
    if (is.null(infile)) {
      # User has not uploaded a file yet
      return(NULL)
    }

    # CLEAN FILE
    name <- names(input$datafile)[1]
    csvFile <- read.csv(text=input$datafile[[name]])

  output$dataTable <- renderDataTable(csvFile , options = list(scrollX = '1100px') )

}

ui.R (только соответствующая часть):

   # DRAG AND DROP FILE INPUT
   h3(id="data-title", "Drop Datasets"),

   div(class="col-xs-12", id="drop-area", ondragover="dragOver(event)", 
       ondrop="dropData(event)" , onClick="fallback(event)"),

   div(onClick="removeFiles(event)", actionButton(inputId="resetAutomaticInput", label="Reset Input")

Я не понимаю, как заставить мои блестящие значения реагировать на событие, связанное с входным $ datafile. Любая помощь высоко ценится!

Ответы на вопрос(1)

Ваш ответ на вопрос