Файл загружается только для .txt .log .svg, но не для .xlsx .xls .gif .docx и т. Д. - PullRequest
1 голос
/ 24 февраля 2020

Я пишу код в Struts 2.5, где пользователь может загружать загруженные файлы, используя AJAX. Он работает только для файлов .txt, .log, .rtf и .svg.

Файлы типа .xls, .doc и .gif загружаются, но не открываются и не открываются. показывая коррумпированный. У меня нет привилегии делиться кодом моей организации.

Я также использую загрузку. js и тип содержимого заголовка предназначен для приложения-ответа / потока октетов. Использование download.bind

$.ajax({
  type: "POST",
  enctype: 'multipart/form-data',
  url: "myURL?&filePath=" + $(name).html() + "&fileName=" + $(name).html().split(/[\/]/).pop(),
  cache: false,
  processData: false,
  contentType: "application/x-www-form-urlencoded; charset=UTF-8",
  success: function(data) {
    if (data.includes("OK")) {
      console.log("Upload Passed");
    } else {
      console.log("Upload failed");
    }
  }
});

1 Ответ

1 голос
/ 24 февраля 2020

Решено ... Ранее использовалось.

`$.ajax({
                type: "POST",
                enctype: 'multipart/form-data',
                url: "url?&filePath="+$(name).html()+"&fileName="+$(name).html().split(/[\\\/]/).pop(),
                cache: false,
                processData: false,
                contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                success: function(data){
                    if(data.includes("OK")) {
                        console.log("Upload Passed");
                    }else{
                        console.log("Upload failed");
                    }


                }
            });`

Это приводит к тому, что ответ в двоичном виде должен быть текстом, который запутал

`var ajax = new XMLHttpRequest();
ajax.open("POST",url,true);
    ajax.onreadystatechange = function(){
        if(this.readyState == 4) {
            if(this.status == 200) {
                console.log(typeof this.response); // should be a blob
                    var blob = new Blob([this.response], {type: "application/octet-stream"});
                  var fileName = "test.pdf";
                  saveAs(blob, fileName);
            } else if(this.responseText != "") {
                console.log(this.responseText);
            }
        } else if(this.readyState == 2) {
            if(this.status == 200) {
                this.responseType = "blob";
            } else {
                this.responseType = "text";
            }
        }
    };
ajax.send(json);`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...