2015-02-27 2 views
1

Я пытаюсь загрузить Zip-файл из своих представлений Django. Но я вызываю функцию views из моей службы angularjs по запросу post.The, возвращает zip-файл, но это не загружается. Может кто-нибудь, пожалуйста, скажите мне, что такое содержимое функции .success в моей службе angularjs, чтобы файл zip был загружен?Загрузка zip-файла с помощью angular-js и django

ответ

0

Это решение отлично подходит для меня. Я надеюсь, это поможет вам.

var req = { 
     method: 'POST', 
     url: 'api/cdr/downloads/', 
     responseType:"arraybuffer", 
     data: selected 
     }; 

     $http(req) 
     .success(function(data, status, headers){ 
      var arr = data; 
      var byteArray = new Uint8Array(arr); 
      var a = window.document.createElement('a'); 

      a.href = window.URL.createObjectURL(
      new Blob([byteArray], { type: 'application/octet-stream' }) 
     ); 
      a.download = headers('filename'); 

      // Append anchor to body. 
      document.body.appendChild(a); 
      a.click(); 


      // Remove anchor from body 
      document.body.removeChild(a); 
     } 
    ).error(function(){ 
     } 
    ); 
0

Ответ, размещенный здесь, не работает для меня. Вот что сделал в конечном итоге работает для меня:

В вашем JavaScript:

 $http({ 
       url: "/serveZip", 
       method: 'POST', 
       responseType: 'arraybuffer' 
      }).then(function success(response){ 
        var a = document.createElement('a'); 
        var blob = new Blob([response.data], {'type':"application/zip"}); 
        a.href = URL.createObjectURL(blob); 
        a.download = "myZip.zip"; 
        a.click(); 
        }); 

В вашем views.py:

def serveZip(request): 
    zipPath = "path/to/myZip.zip" 
    servableZip = open(zipPath,'rb') 
    response = HttpResponse(servableZip, content_type='application/zip') 
    response['Content-Disposition'] = 'attachment; filename="myZip.zip"' 
    return response 

Это работало для меня в хроме, не пробовал, но в другом месте вы можете попробовать приложение/октет-поток вместо приложения/zip, если он не работает в других браузерах.

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