Неправильная длина данных изображения при отправке изображений в виде нескольких частей из JavaScript - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть файл сценария java, из которого я читаю несколько файлов изображений и отправляю его в служебный код C # в виде данных из нескольких компонентов. Я могу отправить несколько данных как несколько частей из сценария Java, и в процессе обслуживания, он получает как многокомпонентный контент. Когда я отправляю json и другой текстовый файл, он правильно принимается, и я могу сохранить полученные файлы.

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

Принимающий сервисный код работает нормально, я пробовал его с некоторыми другими приложениями test # и MS test unit unit. Но я получаю проблему, когда я пытался вызвать только из javascipt

Ниже приведен пример кода

function HandleMultipleFile(xhr) {

  var multipart = "";
  var boundary = Math.random().toString().substr(2);
  xhr.multipart = true;
  xhr.setRequestHeader("Content-Type", "multipart/mixed;boundary=" + boundary);
  var count = 0;                                                 
  RecursiveRead(multipart, count, activePostFile, boundary, xhr);

  }
function RecursiveRead(multipart, index, activePostFile, boundary, xhr) {

  if (index === activePostFile.length) {
    multipart += "--" + boundary + "--\r\n";
    var length = multipart.length;
    xhr.send(multipart);
    return;
  }
  var postfile = activePostFile[index];
  var reader = new FileReader();
  reader.onload = function (e) {
    var filename = postfile.value;
    var mimetype = "image/jpeg";

    var data1 = reader.result;
    var len = data1.length;
    if (index !== 0) {
        var subindex = data1.indexOf(",");
        var subdata = data1.slice(subindex+1)
        data1 = atob(subdata);
    }
    var len2 = data1.length;

    multipart += "--" +
        boundary +
        "\r\nContent-type: " + mimetype +
        "\r\n\r\n" +
        data1 +
        "\r\n";

    RecursiveRead(multipart, index + 1, activePostFile, boundary, xhr);
    return;
  }

}
...