Как исправить ошибку "simpleError в basename (x): путь слишком длинный" в R Plumber? - PullRequest
0 голосов
/ 09 мая 2019

Я хочу получить несколько входов .tif на своем веб-сайте и хочу создать график гистограммы, но мне нужно выбирать каждый файл отдельно. Я пишу несколько входных HTML-код, чтобы избавиться от этой ситуации.

Это html-коды для подключения к R (связан с rPlumber) <input type="file" id="a1" name="files" multiple/><br>


function loadDoc() {
  var a1 = document.getElementById("a1").value;
  var mainname = document.getElementById("mainname").value;
  var xlabname = document.getElementById("xlabname").value;
  var ylabname = document.getElementById("ylabname").value;
  var col = document.getElementById("col").value;
  var colom = document.getElementById("colom").value;


  var data="a1="+a1+"&mainname="+mainname+"&xlabname="+xlabname+"&ylabname="+ylabname+"&col="+col+"&colom="+colom;
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("demo").innerHTML = this.responseText;
    }
  };
  xhttp.open("POST", "http://127.0.0.1:8000/histog", true);
  xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xhttp.send(data);
  }
</script>

Это самая важная часть. У меня есть R коды здесь

#* @post /histog
#* @png
#* @serializer contentType list(type='image/tif')
function(name,a1,mainname,xlabname,ylabname,col,colom){
  browser()

  b <- list(a = paste0("C:/Users/SafaT/Documents/code/", ".png"))

  png(file=b,
      width=600, height=350)


  ras = paste0(a1, 1:11, ".tif")
  landsat <- stack(ras)



  landsatRGB <- landsat[[c(4,3,2)]]
  landsatFCC <- landsat[[c(5,4,3)]]

  VI <- function(img, k, i) {
    bk <- img[[k]]
    bi <- img[[i]]
    vi <- (bk - bi) / (bk + bi)
    return(vi)
  } 



  ndvi <- VI(landsat, 5, 4)


  hist(ndvi,
       main = mainname,
       xlab = xlabname,
       ylab= ylabname,
       col = col,
       xlim = c(-0.5, 1),
       breaks = as.numeric(colom),
       xaxt = 'n')
  axis(side=1, at = seq(-0.5,1, 0.05), labels = seq(-0.5,1, 0.05))



  dev.off()


}

«a1» - это кнопка ввода в html. Эти коды выдают ошибку типа «simpleError в basename (x): path too long», когда я выбираю 11 элементов. R показывает пути к файлам из 11 элементов и выдает эту ошибку.

...