2017-02-08 10 views
-1

У меня проблема с загруженным zip-файлом. Все время, когда я нажимаю на архив, он бросает «Архив или неизвестный формат или поврежден». Я думаю, что проблема связана с кодированием (форматом содержимого архива). Пожалуйста помоги!JS Загруженный архив бросает «архив неизвестный или поврежденный»

$.ajax({ 
    url: '/Unloading/' + $("#radioVal:checked").val(), 
    type: "POST", 
    data: { 'dateTimeTo': $("#dateTimeTo").val(), 'dateTimeFrom': $("#dateTimeFrom").val() }, 
    beforeSend: function() {$("#divLoading").show();}, 
    success: function (result) { 
     $("#divLoading").hide(); 
     if (result.length === 0) { 
      var message ="Error"; 
      $("#dialog-message").text(message); 
      $("#dialog-message").dialog({ 
       modal: true, 
       buttons: { 
        close: function() { 
         $(this).dialog("close"); 
        } 
       } 
      }); 
     } else { 
      var xmlstr, filename, bb; 
      filename = "UnloadedLeases.zip"; 
      bb = new Blob([result], { type: "application/zip" }); // I think somewhere here is a problem with the coding 

      var pom = document.createElement('a'); 
      pom.setAttribute("target", "_blank"); 
      pom.setAttribute('href', window.URL.createObjectURL(bb)); 
      pom.setAttribute("download", filename); 
      document.body.appendChild(pom); 
      pom.click(); 
      document.body.removeChild(pom); //removing the element a from the page 
     } 
    }, 

ответ

0

Насколько я знаю, $.ajax не позволяет загружать содержимое двоичного из коробки (он будет пытаться расшифровать ваш бинарный файл с UTF-8 и порчи). Либо используйте плагин jQuery (например, jquery.binarytransport.js), либо используйте xhr прямо (с responseType).

$.ajax({ 
    url: '/Unloading/' + $("#radioVal:checked").val(), 
    type: "POST", 
    dataType: 'binary',      // using jquery.binarytransport.js 
    // ... 

    success: function (result) { 
     // Default response type is blob 
     if (result.size === 0) { // instead of length for blobs 
      // ... 
     } else { 
      var bb = result; // already a blob 
      // ... 
     } 
    } 
}) 
+0

Это сработало. Большое спасибо! – DevFoals

 Смежные вопросы

  • Нет связанных вопросов^_^