2016-08-13 4 views
1

Я использую угловой $ http для загрузки файла с сервера. типы файлов могут быть разными. Я должен установить заголовок запроса для аутентификации. , когда загрузка завершена, файл поврежден! вот мой код в стороне клиента, чтобы сохранить файл:

getFile: function(file) { 
    $http({ 
     method: 'GET', 
     url: 'download' + "/" + file.name, 
     headers: { 
      "X-AUTH-TOKEN": "my-token", 
      Accept: "*/*", 
     } 
    }).success(function(data) { 
     var fileBlob = new Blob([data], { 
      type: '*/*;charset=utf-8' 
     }); 
     saveAs(fileBlob, file.name); 
    }).error(function(err) { 
     console.log('err', err); 
    }); 
} 
+0

- ваш поврежденный файл двоичный файл или текстовый файл? –

+0

* .txt файлы в порядке. но * .pdf, * .docx и т. д. повреждены. –

+0

Сохранение двоичного файла в виде текстового файла приводит к множеству интерпретируемых символов, что приводит к повреждению двоичного файла. Я удалил свой ответ, так как он не сократил его, но это, вероятно, причина. Dig далее здесь: http://stackoverflow.com/questions/23451726/saving-binary-data-as-file-using-javascript-from-a-browser –

ответ

3

я, наконец, решил ее, добавив этот конфиги для запроса Ajax:

dataType : "binary", 
    processData : false, 
    responseType : 'arraybuffer' 

и изменение типа кляксы на

«приложений/octet-stream "

+0

Может ли кто-нибудь помочь мне с этим? http://stackoverflow.com/questions/42396959/downloaded-document-getting-corrupted-using-blob-method-in-angularjs – Phoenix

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