ajax-запрос на загрузку файла excel показывает мне усеченный ответ

Я пытаюсь загрузить файл Excel с помощью Ajax (XMLHttpRequest).

По завершении обнаруживается, что responseText состоит всего из 5 символов.
Инструмент сетевого анализа (Fiddler) показывает мне, что мой компьютер получил весь файл..

так почему же responseText показывает мне только 5 символов? Я пробовал как синхронные, так и асинхронные вызовы.

Спасибо за любую помощь, которую вы можете дать здесь.

var xmlHttpReq = getXmlHttpRequestObject();

function  getXmlHttpRequestObject(){
    var xmlhttp;

    if (window.XMLHttpRequest){// code for all new browsers
          xmlhttp=new XMLHttpRequest();

    }else if (window.ActiveXObject){// code for IE5 and IE6
         // xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

        progids = ['MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.3.0', 'Microsoft.XMLHTTP'];

        for (i=0 ; i < progids.length; i ++){
            try {
                xmlhttp = new window.ActiveXObject(progids[i]);
                break;
            } catch (e) {
              //do nothing
            }
        }


    }


    return xmlhttp;


}

//utility method for http get
function doSynchronousGet(url){
    if(xmlHttpReq == null){
        xmlHttpReq = getXmlHttpRequestObject();
    }

    //change last param to true for making async calls.
    xmlHttpReq.open("GET" ,url,false);
    xmlHttpReq.setRequestHeader("Connection", "close");
    xmlHttpReq.send(null);
    return xmlHttpReq.responseText;
}



var resultText = doSynchronousGet(url);

alert('resultText length: '+ resultText.length);
alert('resultText: '+ resultText);

person rk2010    schedule 22.12.2009    source источник


Ответы (2)


Проблема, вероятно, в том, что XMLHttpRequest обычно не принимает двоичные данные, такие как файл Excel. Если вы просто хотите, чтобы пользователь загрузил файл, прочитайте сообщение Рамиза. Если вам нужно прочитать данные в JavaScript, попробуйте переключиться на текстовый формат, такой как CSV (или лучше для парсинга, JSON). Если вам действительно нужно прочитать двоичный файл, есть обсуждения этого здесь и здесь .

person Annie    schedule 22.12.2009
comment
Большое спасибо за предоставление этих двух ссылок. Я использую решение VBscript, которое позволяет нам получить дескриптор responseBody. а затем прочитайте байты из него. Он отлично работает. - person rk2010; 22.12.2009
comment
Где пост Рамиза? - person Derrick; 04.04.2016

Не используйте вызов Ajax (xmlhttprequest) для загрузки/выгрузки файлов. Лучше сделать это на стороне сервера.

person Krunal    schedule 22.12.2009