2015-08-31 5 views
0

Мне нужно загрузить файл из запроса ajax GET в angularjs (запрос ajax перенаправляется на ссылку загрузки). Мой текущий подход заключается в создании невидимого iframe и загрузке этого url в нем, чтобы получить всплывающее окно «Сохранить как» для загруженного файла. Но мне нужно изменить имя файла перед сохранением как всплывающее окно.изменить имя файла при загрузке в angularjs

Пожалуйста, предложите способ добиться того же.

+0

имя файла будет как определено сервером вам нужно будет отправить заголовок 'content-disposition', чтобы изменить его. См. Http://stackoverflow.com/questions/1012437/uses-of-content-disposition-in-an-http-response-header – andrew

+0

ссылка имеет ресурс Amazon S3. Есть ли способ изменить имя файла на стороне клиента вместо сервера? – Rahul

+1

Я сомневаюсь. возможно, будет возможно прочитать данные с помощью js 'FileReader' и сохранить с помощью' blob', но я подозреваю, что если у вас что-то получится, это не сработает во всех браузерах. посмотрите на это: http://stackoverflow.com/questions/13405129/javascript-create-and-save-file – andrew

ответ

0

Вы можете использовать Filesaver.js сценарий, написанный eligrey (Im использованием angularjs в приведенном примере) Вы можете достичь того же в классическом JavaScript, используя объект XMLHttpRequest

//In your html code , add these : -> 
<script src="https://rawgit.com/eligrey/FileSaver.js/master/FileSaver.js" type="text/javascript"></script> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script> 
//In your Javascript:- 

$http({ 
    url: "url where the file is located", 
    method: "GET", 
    responseType: "blob" 
}).then(function (response) { 

saveAs(response.data,"newfilename.extension"); 

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